• 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
  • 相关阅读:
    Android 简单案例:可移动的View
    Android 简单案例:onSaveInstanceState 和 onRestoreInstanceState
    Android 简单案例:继承BaseAdapter实现Adapter
    Android ImageResizer:inSampleSize
    Android 动画fillAfter和fillBefore
    Android Runtime.getRuntime().exec
    Android Fingerprint系列之google原生界面
    GIF录制工具
    Android Graphviz 安装
    Google Java编程风格指南
  • 原文地址:https://www.cnblogs.com/roboot/p/15648700.html
Copyright © 2020-2023  润新知