@twein89
2017-05-23T03:44:37.000000Z
字数 1273
阅读 664
爬虫,python
组件:
Scheduler
Scheduler从新任务队列里获取任务,决定哪些是新任务,哪些需要重新抓取,按优先级把任务排序并发送给Fetcher。并负责定时任务和失败任务重试
Fetcher
Fetcher抓取页面然后发送给Processor,可以设置 Fetch method, headers, cookies, proxy, etag etc
Processor
执行脚本,进行页面解析和信息抽取(pyquery)
几个常用的api
self.crawl(url, **kwargs)
self.crawl 是主要接口, 告诉框架 pyspider 哪些url(s) 需要抓取.
def on_start(self):
self.crawl('http://scrapy.org/', callback=self.index_page)
age
控制任务的有效期。
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
...
@every(minutes=0, seconds=0)
method will been called every minutes or seconds
@every(minutes=24 * 60)
def on_start(self):
for url in urllist:
self.crawl(url, callback=self.index_page)
save
用来在callback中传递参数
def on_start(self):
self.crawl('http://www.example.org/', callback=self.callback,
save={'a': 123})
def callback(self, response):
return response.save['a']
fetch_type
设为js可以抓取需要js渲染的页面
js_script
用来在页面中执行一段js脚本
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;
}
''')
参考api文档
页面解析器pyquery文档
框架作者博客里有pyspider中文系列教程,可以先看这个
想要调试一个项目比如zj_huzhou.py这个脚本
可以在本地用pyspider one命令调试,例如pyspider one zhejiang/zj_huzhou.py