PySpider API介绍

self.crawl

主要告诉pyspider需要爬取的网址

url

需要爬取的url列表

callback

这个参数用来指定爬取内容后需要哪个方法来处理内容.一般解析为 response. default: _ call __ 如下面调用方法:

例子
def on_start(self):
    self.crawl('http://scrapy.org/', callback=self.index_page)

age

任务有效期,以秒为单位,在有效期内爬虫认为该页面没有更改,则在有效期内爬虫会忽略该网址的信息爬取,下面例子每一个回调index_page的任务有效期是10天,在10天之内再遇到这个任务都会被忽略掉(除非有强制抓取参数才不会忽略)

例子
# 这里表示60秒*60分*24小时*10天,即10天内不会改变
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
    ...

priority

爬取优先级,数字越大优先级越大,默认为0,可以用这个来先做宽度搜索BFS

例子
# 默认为先执行第二句
def index_page(self):
    self.crawl('http://www.example.org/page2.html', callback=self.index_page)
    self.crawl('http://www.example.org/233.html', callback=self.detail_page,
               priority=1)

exetime

爬取任务定时,默认为0,就是即时爬取,下面例子是30分钟后爬取

例子
# 默认为先执行第二句
import time
def on_start(self):
    self.crawl('http://www.example.org/', callback=self.callback,
               exetime=time.time()+30*60)

retries

失败重新执行次数,默认3次

itag

任务标记值,此标记会在抓取时对比,如果这个值发生改变,不管有效期有没有到都会重新抓取新内容.多数用来动态判断内容是否修改或强制重爬.默认值是:None.

例子
#.update-time字段值改变,则无论有效期多少,重新爬取
# 默认为先执行第二句
import time
def index_page(self, response):
    for item in response.doc('.item').items():
        self.crawl(item.find('a').attr.url, callback=self.detail_page,
                   itag=item.find('.update-time').text())

# 也可以在Handler.crawl_config里面设置
class Handler(BaseHandler):
    crawl_config = {
        'itag': 'v223'
    }

auto_recrawl

当设置为True时,任务每过一次有效期(age)都会自动重新爬取,默认值为False

例子
def on_start(self):
    self.crawl('http://www.example.org/', callback=self.callback,
               age=5*60*60, auto_recrawl=True)

method

HTTP请求,默认为GET

params

URL后面的请求参数,字典

例子
def on_start(self):
    self.crawl('http://httpbin.org/get', callback=self.callback,
               params={'a': 123, 'b': 'c'})
    self.crawl('http://httpbin.org/get?a=123&b=c', callback=self.callback)

data

POST请求参数,字典值会form-encode后再附加

例子
def on_start(self):
    self.crawl('http://httpbin.org/post', callback=self.callback,
               method='POST', data={'a': 123, 'b': 'c'})

files

headers

自定义请求头,字典类型,可在config里设置

cookies

自定义请求的cookies,字典类型

connect_timeout

指定请求时链接超时时间,单位秒,默认值:20

timeout

请求内容里最大等待秒数.默认值:120

allow_redirects

遇到30x状态码时是否重新请求跟随.默认是:True.

validate_cert

遇到HTTPS类型的URL时是否验证证书,默认值:True.

proxy

设置代理服务器,格式如 username:password@hostname:port .暂时只支持http代理

例子
class Handler(BaseHandler):
    crawl_config = {
        'proxy': 'localhost:8080'
    }

etag

last_modified

fetch_type

设置是否启用JavaScript解析引擎. default: None

例子
    def on_start(self):
        self.crawl('http://xueqiu.com/today/all', callback=self.index_page, fetch_type='js')

js_script

使用javascript来模拟操作页面

例子
def on_start(self):
    self.crawl('http://www.example.org/', callback=self.callback,
               fetch_type='js', js_script='''
               function() {
                   window.scrollTo(0,document.body.scrollHeight);
                   return 123;
               }
               ''')

js_run_at

js_viewport_width/js_viewport_height

load_images

当开启js fetcher时,是否读取图片,默认为False

save

传递一个对象给任务,在任务解析时可以通过response.save来获取传递的值

例子
# 在回调里123将被返回
def on_start(self): 
    self.crawl('http://www.example.org/', callback=self.callback,save={'a': 123}) def callback(self, response): return response.save['a']

taskid

force_update

@config(**kwargs)

@config(age=15*60)
def index_page(self, response):
# 第一句运行15分钟,第二句运行10天,受到detail的时间影响
    self.crawl('http://www.example.org/list-1.html', callback=self.index_page)
    self.crawl('http://www.example.org/product-233', callback=self.detail_page)

@config(age=10*24*60*60)
def detail_page(self, response):
    return {...}

Handler.crawl_config = {}

整个project的参数设置,字典类型

class Handler(BaseHandler):
    crawl_config = {
        'headers': {
            'User-Agent': 'GoogleBot',
        }
    }
    ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值