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',
    }
}
...

你可能感兴趣的:(PySpider API介绍)