「Scrapy 爬虫框架」爬虫页(Spiders)详解

文章目录

  • 内容介绍
  • spider类参数解释

内容介绍

开发环境为 Python3.6,Scrapy 版本 2.4.x ,爬虫项目全部内容索引目录

看懂Python爬虫框架,所见即所得一切皆有可能

本章带你学习基于 Python3Scrapy 爬虫框架 中数据爬取过程中
在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()

你可能感兴趣的:(Python,爬虫基础和项目管理,python,scrapy,spider,爬虫,源码)