Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider
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运行机制
以上是对Crawl Spider的初步了解,接下来从使用正则表达式提取链接开始更加深入地学习Crawl Spide。
Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider相关推荐
- python的scrapy框架的安装_Python爬虫基础(四)--Scrapy框架的安装及介绍
Scrapy框架的介绍 安装: pip3 install Scrapy 安装测试: cmd命令行界面,输入:scrapy -h 框架安装完成: scrapy框架: 分为五个模块+两个中间件(5+2结构 ...
- dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码
scrapy框架之增量式爬虫 一 .增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的 ...
- python爬虫Scrapy框架之增量式爬虫
一 增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的电影.那么,当我们在爬虫的过程中 ...
- python增量爬虫_python爬虫Scrapy框架之增量式爬虫
一 增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的电影.那么,当我们在爬虫的过程中 ...
- python之Scrapy框架的第一个爬虫
执行: D:\pycodes\python123demo>scrapy crawl demo scrapy crawl demo 学习笔记: 代码: D:\pycodes>scrapy s ...
- python 爬虫框架_Python网络爬虫-scrapy框架的使用
1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...
- python 中的爬虫· scrapy框架 重要的组件的介绍
一 . 去重的规则组件 去重数据,中通过set() 去重的, 留下的数据存在redis 中, 找到这个类 : from scrapy.dupefilter import RFPDupeFilter ...
- python组件介绍_python 中的爬虫· scrapy框架 重要的组件的介绍
一 . 去重的规则组件 去重数据,中通过set() 去重的, 留下的数据存在redis 中, 找到这个类 : from scrapy.dupefilter import RFPDupeFilter ...
- python cookie池_Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
下载代码Cookie池(这里主要是微博登录,也可以自己配置置其他的站点网址) 下载代码GitHub:https://github.com/Python3WebSpider/CookiesPool 下载 ...
最新文章
- Ubuntu下搭建postgresql主从服务器(方法1)
- AttributeError: h5py.h5.H5PYConfig‘ has no attribute ‘__reduce_cython__‘
- martin fowler_用Java和Java 8创建内部DSL,采用Martin Fowler的方法
- linux 打开php服务器文件夹,Linux下如何查看文件和文件夹大小
- 程序员笔试面试后上机_hcie面试有哪些要注意的事项?
- 硬盘主引导扇区汇编代码
- bash执行mysql的warning怎么屏蔽_使用mysql从终端禁止警告消息,但密码写在bash脚本...
- 51. Element replaceChild() 方法
- Linux大批量文件rm命令无效
- 如何彻底卸载Anaconda?
- 主成分分析法(PCA方法)计算OBB包围盒
- 程序员能考哪些证书?这个几个不能少
- SentencePiece,subword-nmt,bpe算法
- Little Dima and Equation
- 在WIN10下通过网口给华为海思Hi3516DV300刷机(鸿蒙系统)
- 【读书向】阿里云天池大赛赛题解析——可视化
- 识别图中文字python_python识别图片中文字的方法
- 暴跌27%!科通芯城遭沽空机构狙击 被指“横跨十年的世纪骗案”
- 怎样娶到比尔盖茨的女儿?
- MiniGUI学习整理