Scrapy框架-爬虫程序相关属性和方法汇总

时间:2022-11-23 20:57:50

一.爬虫项目类相关属性

  • name:爬虫任务的名称
  • allowed_domains:允许访问的网站
  • start_urls: 如果没有指定url,就从该列表中读取url来生成第一个请求
  • custom_settings:值为一个字典,定义一些配置信息,在运行爬虫程序时,这些配置会覆盖项目级别的配置

    所以custom_settings必须被定义成一个类属性,由于settings会在类实例化前被加载
  • settings:通过self.settings['配置项的名字']可以访问settings.py中的配置,如果自己定义了custom_settings还是以自己的为准
  • logger:日志名默认为spider的名字
  • crawler:该属性必须被定义到类方法from_crawler中,crawler可以直接crawler.settings.get('setting文件中的名称')

二.爬虫项目类相关方法

  • from_crawler(crawler, *args, **kwargs):这个就是优先于__init__执行函数举例代码可以如下
#一般配置数据库的属性时候稍微用影响
#简单些下
@classmethod
def from_crawler(cls,crawler):
HOST = crawler.settings.get('HOST') #这里面的属性都是在settings中设置的名称
PORT = crawler.settings.get('PORT')
USER = crawler.settings.get('USER')
PWD = crawler.settings.get('PWD')
DB = crawler.settings.get('DB')
TABLE = crawler.settings.get('TABLE')
return cls(HOST,PORT,USER,PWD,DB,TABLE)
def __init__(self,HOST,PORT,USER,PWD,DB,TABLE):
self.HOST = HOST
self.PORT = PORT
self.USER = USER
self.PWD = PWD
self.DB = DB
self.TABLE = TABLE
#看一眼就知道了吧
  • start_requests(self):该方法用来发起第一个Requests请求,且必须返回一个可迭代的对象。它在爬虫程序打开时就被Scrapy调用,Scrapy只调用它一次。

    默认从start_urls里取出每个url来生成Request(url, dont_filter=True)

举例

如果不写start_requests方法:他会把start_urls的两个网址都发送过去

import scrapy
class BaiduSpider(scrapy.Spider):
name = 'test'
allowed_domains = ['http://httpbin.org/get']
start_urls = ['http://httpbin.org/get','http://httpbin.org/get'] def parse(self, response):
print('接受一次')

如果写start_requests方法:他会把我们指定的Request对象发送出去,发送必须以迭代器的形式输出

  • parse(self,response):这是默认的回调函数

  • log(self, message, level=logging.DEBUG, **kw): 定义日志级别

  • close(self,reason):关闭爬虫程序执行