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',
    }
}
...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 概要:了解了爬虫的基础知识后,接下来我们来使用框架来写爬虫,用框架会使我们写爬虫更加简单,接下来我们来了解一下,p...
    小新你蜡笔呢阅读 7,647评论 6 10
  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,653评论 4 46
  • 又是一个黄昏,大兔子和小兔子肩并肩坐在一起,看着渐渐落下的太阳。 “月亮又要升起来了。”小兔子说。...
    拾夜者阅读 540评论 1 9
  • Rome was not built in a day!罗马不是一天就能建成的,英语学习如是。现在,越来越多的开始...
    欣兴妈妈阅读 2,015评论 4 0