pyspider参数注解
新建爬虫的初始化代码,接下来针对这段代码作简单解释
#!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2021-12-06 10:15:41 # Project: test from pyspider.libs.base_handler import * class Handler(BaseHandler): crawl_config = { } @every(minutes=24 * 60) def on_start(self): self.crawl('__START_URL__', callback=self.index_page) @config(age=10 * 24 * 60 * 60) def index_page(self, response): for each in response.doc('a[href^="http"]').items(): self.crawl(each.attr.href, callback=self.detail_page) @config(priority=2) def detail_page(self, response): return { "url": response.url, "title": response.doc('title').text(), }
- crawl_config:爬虫的全局参数设置,例如请求头和cookies可以在这里设置(传入关键字及对应的参数即可)
- on_start(self):爬虫开始爬取的入口
- crawl:和requests有相同的功能 ,可以支持 get(默认) 和 post,常用的参数有
- data 是想要提交数据
- callback 可以在执行完 crawl后调用回调函数
- method 是指定 访问方法
- files 上传文件,{'key': ('file.name': 'content')}
- headers 请求头,类型dict
- cookies 请求的 Cookies 类型 dict
- timeout 请求内容里最大等待秒数.默认值:120
- connect_timeout : 指定请求时链接超时时间,单位秒,默认值:20
- proxy : 可以设置代理服务器,暂时只支持http代理
更多参数使用可以查看官方文档。
- response
- crawl :返回的对象是 response 对象
- response.ur : 返回最后的URL地址
- response.text : 请求响应的文本格式内容**(如果Response.encoding 是 None 或 chardet 模块可用, 响应内容会自动被解析为指定的编码)**
- response.doc : 本方法会调用PyQuery库用返回的内容生成一个PyQuery对象以方便使用,生成对象时默认已经把里面的所有链接格式化成绝对链接,可直接分析使用(具体使用对象方法可以参考PyQuery官方参考手册)
- response.json : 本方法会调用JSON相关库来解析返回的内容
- response.status_code : 返回响应的状态码
- response.headers : 请求响应的头信息,dict格式
- response.cookies : 响应的cookies
- response.time : 抓取使用的时间
- index_page和detail_page只是初始脚本中的回调函数,除了on_start,其他的函数名可以自定
- @every(minutes=24 * 60) 设置多久执行一次(24*60为一天一次,因此可以每天都爬一次获取数据)
- @config
- age 设置任务的有效期限,在这个期限内目标爬取的网页被认为不会进行修改,以秒为单位
- priority 设定任务优先级
- auto\_recrawl 设置是否每到age时间重新爬取一次,默认值是:False
- priority 这个参数用来指定任务的优先级,数值越大越先被执行,默认值为 0
- retries 任务执行失败后重试次数,默认值是 3
- itag 任务标记值,此标记会在抓取时对比,如果这个值发生改变,不管有效期有没有到都会重新抓取新内容.多数用来动态判断内容是否修改或强制重爬,默认值是 None