Scrapy自动爬虫(crawl模板)【scrapy genspider -t crawl news news.sina.com.cn】

Crawl自动爬虫适用:

对有规律的网站进行自动爬取

Crawl自动爬虫总体思路:

  1. 先获取初始网址,获取初始网址中的所有链接,筛选出目标链接并进行访问
  2. 从访问的链接中返回需要的信息
  3. 在访问的链接中重复(1)(2)

Crawl自动爬虫与Basic基础爬虫的区别

模板中多了一个rules()方法,包括有参数:LinkExtractor链接提取,其参数allow指定从Start_url中提取链接的规则;callback指定回调处理函数;follow指定是否执行步骤(3)

目标:

获取当日(2021-06-19)的放置在新浪新闻首页的新闻

分析:

对于当日的新闻,新闻连接中均出现了2021-06-19的时间字样,不管前面的前缀为/c /x。故链接筛选规则可设置为该时间字样。

进入某一新闻首页后,<title>标签下的文本内容为该新闻网页的题目,大部分新闻的网址放在带有 og:url属性的<meta>标签中,但有的新闻源码中没有放本篇新闻的链接。

代码

items.py

声明存放链接和标题的link和title属性

import scrapyclass FirstscrapyItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field()    # 提取新闻标题link = scrapy.Field()       # 提取链接pass

settings.py

开放并设置模拟服务器的报文头,取消爬虫协议

autosinanews.py

使用crawl模板生成的爬虫文件。【scrapy genspider -t crawl news news.sina.com.cn】

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from firstScrapy.items import FirstscrapyItem
from scrapy.http import Requestclass AutosinanewsSpider(CrawlSpider):name = 'autosinanews'allowed_domains = ['news.sina.com.cn']start_urls = ['http://news.sina.com.cn/']# rules指定提取链接的规则# allow 筛选链接的规则,设置筛选出带有时间字样的链接# callback 指定回调函数# follow指定链接是否跟进,即在子页是否继续往下走rules = (Rule(LinkExtractor(allow=r'2021-06-19'), callback='parse_item', follow=False),)   # 指定在当前页中提取链接的规则# 首次模拟浏览器def start_requests(self):ua = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36"}yield Request('http://news.sina.com.cn', headers = ua)def parse_item(self, response):item = FirstscrapyItem()#item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()#item['name'] = response.xpath('//div[@id="name"]').get()#item['description'] = response.xpath('//div[@id="description"]').get()pat_title = "/html/head/title/text()"pat_link = "/html/head/meta[@property='og:url']/@content"item["title"] = response.xpath(pat_title).get()item["link"] = response.xpath(pat_link).get()#print(item["title"])#print(item["link"])#print("")return item

pipelines.py

后续的数据处理,本爬虫因为仅测试使用,可以不修改pipelines,在爬虫文件中执行输出。

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
from itemadapter import ItemAdapterclass FirstscrapyPipeline:def process_item(self, item, spider):# 输出容器内容for i in range(0, len(item["title"])):print(item["title"])print(item["link"])print(" ")return item

【python】【爬虫】Scrapy Crawl自动爬虫【获取新浪新闻为例】相关推荐

  1. 使用Pull解析XML获取新浪新闻

    目标是获取新浪新闻如图所示位置的头条新闻数据: 思路是这样的,先访问这个首页拿到这个部分每一条新闻的url,然后再逐一访问这些详情页面,从详情页面获取标题正文图片等数据. 1.通过HttpUrlCon ...

  2. python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...

  3. 【API爬虫】30分钟百万条新浪新闻信息爬取。python得极速之旅

    请参考源码,文字是最先得想法,没有再做更改.源码以更新 前期准备:requests库:使用pip install requests 安装. pymongo库:使用pip install pymongo ...

  4. python爬虫新浪新闻_python爬虫之获取新浪新闻信息

    一:前言 windows平台: 1):谷歌的chrome浏览器:python3.6的软件安装包,需要导入的库有: [python]  view plain copy pip install reque ...

  5. 使用python网络爬虫爬取新浪新闻(一)

    使用python网络爬虫爬取新浪新闻 第一次写博客,感觉有点不太习惯!不知道怎么突然就想学学爬虫了,然后就用了一天的时间,跟着教程写了这个爬虫,!不说废话了,我将我从教程上学习的东西整个写下来吧,从头 ...

  6. 19Python爬虫--爬取新浪新闻标题并保存到数据库

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 创建爬虫文件 scrapy st ...

  7. python3爬虫-爬取新浪新闻首页所有新闻标题

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/xiangwanpeng/articl ...

  8. 多线程新浪新闻搜索网络爬虫-基于关键字

    本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平台.如有转载请注明本文博客的地址(链接) 源码获取请联系:1563178220@qq.com 简介 互联网有海量的新闻,如 ...

  9. 爬虫实战操作(2)—— 新浪新闻内容细节

    本文实现获取新浪新闻内容的各种细节,标题.时间.来源.内文.编辑者.评论数. import requests from bs4 import BeautifulSoup res=requests.ge ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(配置边界颜色)实战
  2. [SCOI2013]多项式的运算
  3. java filereader blob_如何从javascript发送音频blob到java spring服务...
  4. CentOS配置ssh无密码登录
  5. Java学习笔记24(Map集合)
  6. python3.7输出语句_python3.4用循环往mysql5.7中写数据并输出的实现方法
  7. 记2个月来,我在Csdn 掀起的微软面试风暴
  8. include查找文件路径
  9. c语言程序设计基础第三版答案,清华大学出版社-图书详情-《C语言程序设计上机指导与习题解答(第3版)》...
  10. linux部署moodle
  11. 计算机组策略无法编辑,win7系统无法打开本地组策略编辑器的解决方法
  12. 如何使用Python实现一个pdf阅读器?
  13. git stash暂存操作
  14. PDF文件简介及PDF文档加密方法
  15. win10禁用驱动程序强制签名_只需一个简单命令,在Win10上启用Windows恢复环境(WinRE)...
  16. 如何判断是否适合学编程?
  17. NUCLEO-L476RG开发板学习笔记汇总
  18. 区块链投资现状和区块链应用部署的探讨
  19. 2015淘宝最新排名新规则
  20. Java基础语法96-Java91011新特性

热门文章

  1. 学霸黄晓南,和她的霸蛮品友互动
  2. 数字化工厂顶层架构分析
  3. 不看我真的会很伤心【压测工具:提升系统性能的利器】,查看TPS,计算TPS,计算压测指标、压测名词解释、教大家如何压测
  4. html修改自动变回去,将Htm和Html文件图标改回默认图标
  5. SAP ABAP me21n 采购订单抬头字段增强 MM06E005
  6. CnOpenData信用评级机构从业人员信息数据
  7. lwip简介及基础知识
  8. ​2023年湖北武汉自己怎么报考二建?报考二建学历不符怎么办?启程别
  9. 【Unity】滚动缩放关卡选择列表
  10. java毕业生设计冰鲜鱼管理系统的设计与实现计算机源码+系统+mysql+调试部署+lw