Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider

  • 写在前面
  • 初探Crawl Spider
    • 创建Crawl Spider项目
    • 对比Basic与Crawl
    • Crawl Spider运行机制

写在前面

之前一直采用Scrapy框架中的基础爬虫,但是除此之外,Scrapy提供了多种爬虫,用于满足不同的需求,这里对内置爬虫做一个更加深入的认识,同时开始学习Crawl Spider的使用方法。

初探Crawl Spider

打开cmd命令行程序,通过cd命令进入之前的项目文件,通过以下命令查看Scrapy框架中提供的所有内置爬虫类型。

C:\Users\Lenovo\Desktop\search_scrapy>scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed

其中basic就是之前使用的基础爬虫;在官方给出的说明文档中,crawl的释义是用来爬取结构有规律的网站;其余的两个内置爬虫适合用来爬取文件项目等,在此不做详细介绍。
接下来从创建Crawl Spider项目开始,对Crawl Spider的使用进行学习。

创建Crawl Spider项目

同样在命令行程序中进入之前的项目文件目录,通过命令创建新的Crawl Spider文件。

C:\Users\Lenovo\Desktop\search_scrapy>scrapy genspider -t crawl search_crawl csdn.com
Created spider ‘search_crawl’ using template ‘crawl’ in module:
search_scrapy.spiders.search_crawl

这里对使用到的命令做一个简单的解释,genspider是shell的另外一个命令,-t指代的是template,即以当前爬虫项目为模板生成新的爬虫文件,crawl给出了爬虫文件类型,随后是爬虫文件的命名以及爬虫项目允许的域名。
随后我们可以在项目目录中找到新创建好的crawl爬虫文件。

现在查看一下当前项目中存在的爬虫。

C:\Users\Lenovo\Desktop\search_scrapy>scrapy list
search
search_crawl

和预想的一样,项目中增加了一个名字为search_crawl的爬虫。

对比Basic与Crawl

还记得最初创建爬虫项目时,爬虫文件中自带的框架有哪些吗?
search_basic.py_(Basic类型的爬虫文件初识状态)

# -*- coding: utf-8 -*-
import scrapyclass SearchBasicSpider(scrapy.Spider):name = 'search_basic'allowed_domains = ['example.com']start_urls = ['http://example.com/']def parse(self, response):pass

接下来查看新创建的Crawl类型的爬虫文件自带的框架结构。
search_crawl.py_(Crawl类型的爬虫文件初识状态)

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Ruleclass SearchCrawlSpider(CrawlSpider):name = 'search_crawl'allowed_domains = ['csdn.com']start_urls = ['http://csdn.com/']rules = (Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),)def parse_item(self, response):i = {}#i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()#i['name'] = response.xpath('//div[@id="name"]').extract()#i['description'] = response.xpath('//div[@id="description"]').extract()return i

最主要的区别就是rules以及parse_item函数,这同时也是Crawl提供的基础功能。
在基础爬虫中,需要自己编写XPath爬取路径以及回调规则。而在Crawl爬虫中,parse_items函数打开start_urls这个路径,得到response,分析并提取其中所有的路由,再通过rules规则匹配一个正则表达式,然后调用回调函数,回到parse_items。

This spider would start crawling the home page, collecting category links, and item links, parsing the latter with the parse_item method. For each item response, some data will be extracted from the HTML using XPath, and an Item will be filled with it.

以上是Scrapy官方文档对Crawl爬虫执行步骤给出的说明,养成阅览官方文档的习惯,能够更加准确地学习。

Crawl Spider运行机制

Follow =True
Follow =False
Scrapy调度器
Scrapy下载器
Response响应
parse函数
具体函数
获得的大量链接
Scrapy管道文件
Rules规则

以上是对Crawl Spider的初步了解,接下来从使用正则表达式提取链接开始更加深入地学习Crawl Spide。

Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider相关推荐

  1. python的scrapy框架的安装_Python爬虫基础(四)--Scrapy框架的安装及介绍

    Scrapy框架的介绍 安装: pip3 install Scrapy 安装测试: cmd命令行界面,输入:scrapy -h 框架安装完成: scrapy框架: 分为五个模块+两个中间件(5+2结构 ...

  2. dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码

    scrapy框架之增量式爬虫 一 .增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的 ...

  3. python爬虫Scrapy框架之增量式爬虫

    一 增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的电影.那么,当我们在爬虫的过程中 ...

  4. python增量爬虫_python爬虫Scrapy框架之增量式爬虫

    一 增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的电影.那么,当我们在爬虫的过程中 ...

  5. python之Scrapy框架的第一个爬虫

    执行: D:\pycodes\python123demo>scrapy crawl demo scrapy crawl demo 学习笔记: 代码: D:\pycodes>scrapy s ...

  6. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  7. python 中的爬虫· scrapy框架 重要的组件的介绍

    一 .  去重的规则组件 去重数据,中通过set() 去重的, 留下的数据存在redis 中, 找到这个类  : from scrapy.dupefilter import RFPDupeFilter ...

  8. python组件介绍_python 中的爬虫· scrapy框架 重要的组件的介绍

    一 .  去重的规则组件 去重数据,中通过set() 去重的, 留下的数据存在redis 中, 找到这个类  : from scrapy.dupefilter import RFPDupeFilter ...

  9. python cookie池_Python爬虫scrapy框架Cookie池(微博Cookie池)的使用

    下载代码Cookie池(这里主要是微博登录,也可以自己配置置其他的站点网址) 下载代码GitHub:https://github.com/Python3WebSpider/CookiesPool 下载 ...

最新文章

  1. Ubuntu下搭建postgresql主从服务器(方法1)
  2. AttributeError: h5py.h5.H5PYConfig‘ has no attribute ‘__reduce_cython__‘
  3. martin fowler_用Java和Java 8创建内部DSL,采用Martin Fowler的方法
  4. linux 打开php服务器文件夹,Linux下如何查看文件和文件夹大小
  5. 程序员笔试面试后上机_hcie面试有哪些要注意的事项?
  6. 硬盘主引导扇区汇编代码
  7. bash执行mysql的warning怎么屏蔽_使用mysql从终端禁止警告消息,但密码写在bash脚本...
  8. 51. Element replaceChild() 方法
  9. Linux大批量文件rm命令无效
  10. 如何彻底卸载Anaconda?
  11. 主成分分析法(PCA方法)计算OBB包围盒
  12. 程序员能考哪些证书?这个几个不能少
  13. SentencePiece,subword-nmt,bpe算法
  14. Little Dima and Equation
  15. 在WIN10下通过网口给华为海思Hi3516DV300刷机(鸿蒙系统)
  16. 【读书向】阿里云天池大赛赛题解析——可视化
  17. 识别图中文字python_python识别图片中文字的方法
  18. 暴跌27%!科通芯城遭沽空机构狙击 被指“横跨十年的世纪骗案”
  19. 怎样娶到比尔盖茨的女儿?
  20. MiniGUI学习整理

热门文章

  1. day11作业-韩明琰
  2. UML 对象图、时序图、活动图 、状态图、协作图 、包图、组件图及部署图
  3. uniapp 图片裁剪插件推荐
  4. 基于UOS的离线仓库部署
  5. Android 6.0 动态权限申请简单简洁优雅的处理方式
  6. docker 开放 2375端口
  7. LLVM PASS 分析【1】:Rotate Loops
  8. python 内置函数转list_python学习笔记11-python内置函数
  9. maven工程一直显示红叉叉
  10. 精确率(精准度),召回率,准确率:机器学习中关于样本和预测的几个概念