部分内容为学习过程中从网上搜集保存备份,以防源网站关闭后无法检索。如有涉及版权请留言,看到后处理

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
posted @ 2021-12-06 10:19  Y档案Y  阅读(221)  评论(0编辑  收藏  举报