「Scrapy 爬虫框架」爬虫页(Spiders)详解
文章目录
- 内容介绍
- spider类参数解释
内容介绍
开发环境为 Python3.6,Scrapy 版本 2.4.x ,爬虫项目全部内容索引目录
看懂Python爬虫框架,所见即所得一切皆有可能
本章带你学习基于 Python3 的 Scrapy 爬虫框架 中数据爬取过程中
在spider文件夹下是每个要执行的py爬虫文件,通过命令行执行的方式执行该文件夹下的py脚本,实现数据抓取的业务内容。
代码内容基于「Scrapy 爬虫框架」源码版本 2.4.0 ,更新内容会进行标记说明对应版本。
spider类参数解释
创建spider内容的命令
scrapy genspider xxxxx xxxxxx.com
1.name
爬虫文件生成的实例化对象名,通过命令行生成,执行脚本的时候是通过这个名称执行,不需要修改,在一个爬虫项目里必须是惟一的。
name = xxxxx # 这里对应的是命令行的第三部分
2.allowed_domains
允许爬取的域名,可选项。如果设置了域名则非域名下的url无法处理。
allowed_domains = []
allowed_domains = [“https://xxxxxx.com“,] # 这里对应的是命令行的最后一部分3.start_urls
需要处理的url列表,通过spider基类的start_requests方法遍历请求。
start_urls = [
'http://aaaa/',
'http://bbbb/',
'http://cccc/',
]
4. custom_settings
专属的spider配置,如果重写此设置会覆盖项目全局的设置,而且必须定义成类变量。建议统一在settings中设置便于管理。不要在此处修改。- 5.crawler
spider类的crawler对象,用于获取settings配置信息中的设置,例如middlewares、pipline等中的设置。
默认不需要修改。 - 6.settings
Settings实例,读取统一配置settings中的信息。
默认不需要修改。 - 7.logger
用于发送数据抓取过程中的项目日志。
默认不需要修改。 8.from_crawler
Scrapy用来创建spider类的方法,默认不需要修改。
@classmethod
def from_crawler(cls, crawler, args, *kwargs):spider = cls(*args, **kwargs)
spider._set_crawler(crawler)
return spider
创建一个实例的对象
def init(self):
#实例化一个浏览器对象(实例化一次)
self.bro = webdriver.Firefox(executable_path=chrm,options =options )
9.start_requests()
生成初始请求,默认使用start_urls列表中的的 url 来构造request,而且request是get请求。
如果需要使用 post 方法、或者参数传递,需要重写start_requests方法。10.parse
Scrapy使用的默认回调,用于处理数据的部分,可以自定义各种名称的parse方法用于数据抓取。
def start_requests(self):
parse_list = [
self.parse1,
self.parse2,
]
# 非API接口方法
for list_num in range(len(self.start_urls)):
for url_num in range(len(self.start_urls[list_num])):
yield scrapy.Request(url=self.start_urls[list_num][url_num],
meta={ 'channel_name': self.channel_name_list[list_num][url_num],
'type_id': self.type_id_list[list_num][url_num]},
callback=parse_list[list_num])
def parse1(self, response):
......
def parse2(self, response):
......
11.closed
爬虫关闭的方法
必须在整个爬虫结束后,关闭浏览器
def closed(self,spider):
print('爬虫结束')
self.bro.quit()
还没有评论,来说两句吧...