目录
- Scrapy Spider
- 前言
- 一、如何运作
- 二、scrapy.Spider
- 属性
- 方法
- 三、创建Spider
- 总结
前言
在scrapy中,spiders是定义如何抓取站点的类,里面包含了抓取的域名,已经如何抓取解析。
是我们爬取数据时主要 *** 作的文件。
一、如何运作
首先我们要知道他是如何运作的。
- 默认情况下,首先调用
start_requests()
获取初始的URL,,并将返回的数据通过回调函数parse()
处理。我们可以重写star_requests,用我们自定义的方法进行处理。
- 回调函数通过选择器解析网页,解析结果可以分为两类,一类是数据部分,另一类就是需要继续爬取的url。
所以可以返回item对象(进行后期处理储存),或者request对象(再次提交请求,指定其他回调函数处理)
- 循环(2)直到完成所有请求,或者解析完所有数据
所有spider的基类,所有其他spider都必须继承它(包括自己编写的蜘蛛)。
name:定义爬虫的名称,必须的。
通常以网站名称命名。
例如baidu.com,我么可以定义为baidu
allowed_domains:允许爬取的域名,是一个列表。
例如:['baidu.com']
start_urls:爬取的起始页面
custom_settings:一个字典。
运行这个爬虫时,需要覆盖项目设置中的全局设置,也就是这个爬虫会使用这里写的设置,不会使用settings中默认的。
此设置要在初始化前更新,所以必须定义成类变量。
方法
start_requests():该方法只会调用一次。
从start_urls中获取url,并返回迭代器,生成请求。
如果需要对其实url处理,例如需要post请求,可以进行重写
parse():默认start_requests()的回调函数。
我们需要重写里面的内容以完成我们的需求
三、创建Spider
下面我们创建一个爬虫文件
在命令行中:scrapy genspider baidu baidu.com
下面是生成的文件:
import scrapy
class BaiduSpider(scrapy.Spider):
name = 'baidu'
allowed_domains = ['baidu.com']
start_urls = ['http://baidu.com/']
def parse(self, response):
"""
编写爬取逻辑
"""
pass
我们可以发现这个爬虫类就是继承自scrapy.Spider。
总结
本节介绍了spider的一些基础知识,我们要熟练掌握,毕竟日后我们写项目时,我们创建新的spider文件,都是基于Spider这个基类的,爬取逻辑啥的都要写在这里面
官方文档:Spider
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)