一.爬虫项目类相关属性
- 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):关闭爬虫程序执行
最后,小编想说:我是一名python开发工程师,整理了一套最新的python系统学习教程,想要这些资料的可以关注私信小编“01”即可,希望能对你有所帮助
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1902927.html