crawlspider

  • 介绍
  • 创建模板
  • 具体参数和解释
    • 重点在rules中:
  • 栗子:

介绍

Scrapy框架中分两类爬虫

Spider类和CrawlSpider类。

crawlspider是Spider的派生类(一个子类),Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合。

简单来说 :就是能够匹配满足条件的url地址 .组成Reuqest对象后自动发送给引擎,同时能够指定callback函数.
就是说 crawlspider爬虫可以按照规则自动获取连接.**

创建模板

scrapy startproject 项目名称

scrapy genspider -t crawl 爬虫名 爬虫运行抓取的域名范围

在项目路径下去运行爬虫
scrapy crawl 爬虫名字

栗子:scrapy genspider -t crawl job_163 hr.163.com

具体参数和解释

import scrapy
from scrapy.linkextractors import LinkExtractor  # 连接提取器
from scrapy.spiders import CrawlSpider, Rule    # 导入CrawlSpider类,Rule规则# CrawlSpider
class Job163Spider(CrawlSpider):name = 'job_163'allowed_domains = ['hr.163.com']start_urls = ['http://hr.163.com/']# 规则的元祖 规则可以有多个 存放 规则 对象rules = (# 创建了一个规则对象# LinkExtractor: 连接提取对象,allow 跟的是一个正则,根据这个正则表达式从响应中自动的去提取符合规则的url地址# callback: 指定 前面根据连接提取器规则 提取出来的url地址的响应交给哪一个解析函数去处理,接收的是一个方法名的字符串# callback 如果传了 表示需要去解析这个响应# callback 如果没传 表示不需要去解析这个响应# follow: 表示是否跟进,表示根据连接提取器提取出来的url地址的响应,是否还需要按照连接提取器的规则继续去提取url地址Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),)def parse_item(self, response):item = {}#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()return item
重点在rules中:
  • rules是一个元组或者是列表,包含的是Rule对象
  • Rule表示规则,其中包含LinkExtractor,callback和follow等参数
    • LinkExtractor:连接提取器,可以通过正则或者是xpath来进行url地址的匹配
    • callback :表示经过连接提取器提取出来的url地址响应的回调函数,可以没有,没有表示响应不会进行回调函数的处理
    • follow:连接提取器提取的url地址对应的响应是否还会继续被rules中的规则进行提取,True表示会,Flase表示不会

链接提取器LinkExtractor的更多常见参数

  • allow: 满足括号中的’re’表达式的url会被提取,如果为空,则全部匹配
  • deny: 满足括号中的’re’表达式的url不会被提取,优先级高于allow
  • allow_domains: 会被提取的链接的domains(url范围),如:['hr.tencent.com', 'baidu.com']
  • deny_domains: 不会被提取的链接的domains(url范围)
  • restrict_xpaths: 使用xpath规则进行匹配,和allow共同过滤url,即xpath满足的范围内的url地址会被提取,如:restrict_xpaths='//div[@class="pagenav"]'

栗子:

dp.py

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Ruleclass DgSpider(CrawlSpider):name = 'dg'allowed_domains = ['wz.sun0769.com']start_urls = ['https://wz.sun0769.com/political/index/politicsNewest?id=1&page=1']# 需求  翻页抓取数据 ,在列表页中 不获取数据 ,所有的数据在详情页中获取rules = (# 翻页的规则Rule(LinkExtractor(allow=r'/politicsNewest?id=1&page=\d+'), callback='parse_item', follow=True),# 详情页的规则Rule(LinkExtractor(allow=r'political/politics/index\?id=\d+'), callback='parse_item'),)def parse_item(self, response):item = {}# 标题item['title'] = response.xpath("//p[@class='focus-details']/text()").extract_first()# 这个地方使用return 原因 就是当前去执行一次 parse_item方法 ,获取数据饿时候 就是获取到的  一条  数据# 如果需求取其他数据 则写不同的Xpath# item['title'] = response.xpath("//p[@class='focus-details']/text()").extract_first()# item['title'] = response.xpath("//p[@class='focus-details']/text()").extract_first()# item['title'] = response.xpath("//p[@class='focus-details']/text()").extract_first()return item

翻页规则:

详情页规则:

标题规则:

记得改setting.py

  • 修改user_agent
  • 修改君子协议

  • 打开延迟时间

Scrapy中的crawlspider爬虫相关推荐

  1. Scrapy框架中的crawlspider爬虫

    1 crawlspider是什么 在spider中要寻找下一页的url地址或者内容的url地址,想想是否有简单的方法省略寻找url的过程? 思路: 从response中提取所有的满足规则的url地址 ...

  2. Scrapy框架的学习(9.Scrapy中的CrawlSpider类的作用以及使用,实现优化的翻页爬虫)

    1.CrawlSpider类通过一些规则(rules),使对于链接(网页)的爬取更具有通用性, 换句话说,CrawlSpider爬虫为通用性的爬虫, 而Spider爬虫更像是为一些特殊网站制定的爬虫. ...

  3. 三十四、Scrapy中的CrawlSpider

    @Author:Runsen Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 目前腾讯招聘的官网改变了,因此本文只能了解,不能实战 创建CrawlSpider模板: scra ...

  4. 以智联为例,scrapy中的主爬虫为zhilian.py

    import scrapy from simulatorspider import items class ZhilianSpider(scrapy.Spider): name = 'zhilian' ...

  5. 4.基于scrapy的实时电影爬虫开发

    在前面搭建好了前后台的基本框架之后,就可以使用websocket+scrapy来开发和用户交互的实时爬虫系统了.基本的思路为:当用户在前台发送请求之后,通过websocket的方式来进行前后台交互,并 ...

  6. 在scrapy中parse函数里面xpath的内容打印不出来_Scrapy中 CrawlSpider 使用

    全站爬取时,有时采用遍历ID的方式,请求量很大,资源消耗很大,而且有可能某些ID已经失效,速度慢,效果不理想:可以试试换成关系网络的方式进行爬取,可能无法抓取全量数据,但是可以抓取比较热门的数据. 在 ...

  7. scrapy的crawlspider爬虫

    1. crawlspider是什么 从response中提取所有的满足规则的url地址 自动的构造自己requests请求,发送给引擎 对应的crawlspider就可以实现上述需求,能够匹配满足条件 ...

  8. Scrapy中CrawlSpider

    Scrapy中CrawlSpider 引入 之前的代码中,我们有很大一部分时间在寻找下一页的URL地址或者内容的URL地址上面,这个过程能够更简单一些吗? 思路 1.从response中提取所有的a标 ...

  9. 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)

    同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...

最新文章

  1. NVIDIA深度学习Tensor Core性能解析(上)
  2. Windows下打印utf-8文件
  3. 大数据到底是不是“算命”?技术大牛们这样说
  4. python编程入门单例_python实现单例模式怎么写啊?
  5. 2个通用js树型导航
  6. centos中mysql操作命令_CentOS系统常用的MySQL操作命令总结
  7. java小游戏制作(maxfo)
  8. 玩转3D全息图像!AI即刻生成
  9. 3dmax推荐用哪个版本,主流好用的版本有哪些?
  10. 全球及中国菖蒲根提取物行业发展规模及投资方向分析报告2022-2028年
  11. 1.Android系统源代码目录与系统目录
  12. SHAMANIC Heil Amazonas-DschungelSHAMA
  13. 汉堡式折叠html,3种超酷汉堡包菜单按钮变形动画特效
  14. python新浪股票接口_python 爬虫sina股票数据
  15. 微信公众号免扫码登录的方法
  16. 《C++语言基础》网络课程主页
  17. 计算机毕业设计之家庭理财管理系统的设计与实现
  18. 按键精灵 html转txt文件,按键精灵怎么把变量输出写入TXT文本
  19. Logstash原理介绍及应用
  20. Protues使用教程

热门文章

  1. C语言三个数比较大小
  2. 汽车电子——整车电气网络和混合传动系统(一)
  3. 【60000个红包】点赞即得!和谭丽一起坚守时间价值!
  4. xlwings写入一列数据
  5. 最全Edge浏览器安装扩展程序步骤
  6. 什么是准双向口,双向口?
  7. 聊前端小白如何系统自学成为前端开发大牛
  8. 给力,世界最小5G核心网在中国研制成功!
  9. 安卓:使用Tasker关闭微信APP录音权限,防止被监听推送广告
  10. Billboard--线段树