
Scrapy
文章平均质量分 65
Scrapy相关技术博客
zzy979
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Scrapy】Item Pipeline
项目管道(Item Pipeline)用于处理Spider返回的Item对象,如果定义了多个项目管道,则按优先级顺序执行官方文档:https://docs.scrapy.org/en/latest/topics/item-pipeline.html项目管道就是实现了process_item()方法的Python类,用于处理Spider返回的Item对象注意:Scrapy并没有提供所谓的ItemPipeline基类,自定义的项目管道类只要有process_item()方法即可,这是利用了Python的协原创 2021-12-25 16:47:09 · 620 阅读 · 0 评论 -
【Scrapy】Item
Item用于存储从页面中提取出的结构化数据,相当于实体类官方文档:https://docs.scrapy.org/en/latest/topics/items.htmlScrapy支持多种Item对象,包括Python字典、scrapy.Item类以及其他几种键值对对象自定义Item:class MyItem(scrapy.Item): foo = scrapy.Field() bar = scrapy.Field()使用Field类定义Item支持的字段(Field实际上仅仅是原创 2021-12-25 16:41:33 · 521 阅读 · 0 评论 -
【Scrapy】选择器
解析页面时最常见的任务是使用选择器从HTML中提取数据,Scrapy使用CSS选择器和XPath两种方式从HTML中提取数据官方文档:https://docs.scrapy.org/en/latest/topics/selectors.html使用选择器提取数据的相关方法Response类方法返回值css(query)SelectorList对象xpath(query)SelectorList对象SelectorList类:Selector的列表属性/方原创 2021-12-25 16:38:23 · 367 阅读 · 0 评论 -
【Scrapy】Spider
Spider是用于定义如何从指定的网站爬取信息的类,功能包括定义初始请求、解析页面并提取数据以及跟踪后续链接官方文档:https://docs.scrapy.org/en/latest/topics/spiders.html典型的爬取循环通过start_urls属性或start_requests()方法定义初始请求URL及其回调函数在回调函数中使用选择器从响应页面中提取数据和新的URL,并通过yield语句分别返回Item对象和Request对象回调函数返回的Item对象将被送往Item Pip原创 2021-12-25 16:14:42 · 297 阅读 · 0 评论 -
【Scrapy】命令行工具
Scrapy提供了一个命令行工具scrapy,位于{Python安装目录}\Scripts\scrapy.exe,对应的模块:scrapy.cmdline官方文档:https://docs.scrapy.org/en/latest/topics/commands.html无参数运行该命令将打印帮助信息:D:\PyCharm\projects>scrapyScrapy 2.3.0 - no active projectUsage: scrapy <command> [opti原创 2021-12-25 16:11:36 · 202 阅读 · 0 评论 -
【Scrapy】入门教程
Scrapy是一个快速的、高层次的网络爬虫框架,基于Python编写,用于爬取网页并提取结构化的数据网址:https://scrapy.org/官方文档:https://docs.scrapy.org/en/latest/index.html安装:pip install scrapy整体架构https://docs.scrapy.org/en/latest/topics/architecture.html核心组件引擎(Scrapy Engine):负责Spider、Item Pipelin原创 2021-12-25 16:06:51 · 390 阅读 · 0 评论 -
【Scrapy源码阅读】ItemMeta类
下面的代码定义了一个Item类:class MyItem(scrapy.Item): foo = scrapy.Field() bar = scrapy.Field()按照Scrapy官方文档的说法,使用关键字参数创建Item对象,和字典一样使用下标访问和修改字段的值,此外还有一个fields属性用于访问字段本身(由于Field类就是dict,因此foo = Field()等价于foo = {}):>>> item = MyItem(foo='abc', bar=1原创 2020-08-19 18:20:43 · 433 阅读 · 0 评论 -
【Scrapy源码阅读】Spider参数传递
官方文档Spider参数中提到,可以使用scrapy crawl命令的-a选项向Spider传递参数:scrapy crawl myspider -a arg1=value1 -a arg2=value2这些参数会被传递到自定义的MySpider类的构造函数,并且超类的构造函数会将其拷贝到属性中:import scrapyclass MySpider(scrapy.Spider): name = 'myspider' def __init__(self, *args, **kwa原创 2020-08-19 17:45:44 · 682 阅读 · 0 评论 -
Scrapy源码阅读——response处理过程
以官方教程QuotesSpider为例,结合源码分析一下Scrapy中response的处理过程。下面是待爬取的网页,红框中的是目标HTML标签:quote文字内容下一页链接QuotesSpider代码如下:import scrapyclass QuotesSpider(scrapy.Spider): name = "quotes" start_urls =...原创 2020-03-15 22:59:17 · 936 阅读 · 1 评论 -
在PyCharm中调试Scrapy爬虫
通常运行Scrapy爬虫的方法是在工程目录下执行scrapy crawl <spider>命令,而不是直接运行Python脚本,因此无法直接命中断点。执行scrapy命令时实际上是执行了scrapy.cmdline模块,因此在PyCharm中添加一个运行该模块的配置即可。点击左上角的"Add Configuration…"添加一个Python运行配置点击右边"Script ...原创 2020-03-15 11:46:24 · 612 阅读 · 0 评论