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

2020-06-19 15:43:20 浏览数 (1)

一.爬虫项目类相关属性

  • 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__执行函数举例代码可以如下
代码语言:javascript复制
#一般配置数据库的属性时候稍微用影响
#简单些下
@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的两个网址都发送过去

代码语言:javascript复制
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):关闭爬虫程序执行

0 人点赞