zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    PAT (Advanced Level) 1114. Family Property (25)
    PAT (Advanced Level) 1113. Integer Set Partition (25)
    PAT (Advanced Level) 1112. Stucked Keyboard (20)
    PAT (Advanced Level) 1111. Online Map (30)
    PAT (Advanced Level) 1110. Complete Binary Tree (25)
    PAT (Advanced Level) 1109. Group Photo (25)
    PAT (Advanced Level) 1108. Finding Average (20)
    PAT (Advanced Level) 1107. Social Clusters (30)
    PAT (Advanced Level) 1106. Lowest Price in Supply Chain (25)
    PAT (Advanced Level) 1105. Spiral Matrix (25)
  • 原文地址:https://www.cnblogs.com/roboot/p/15648700.html
Copyright © 2011-2022 走看看