安装
python2.7环境(仅在 Linux 和 OSX 环境下测试通过)
pip install --allow-all-external -r requirements.txt
如果你使用 ubuntu,依赖以下二进制包:
apt-get install python python-dev python-distribute python-pip libcurl4-openssl-dev libxml2-dev libxslt1-dev python-lxml
启动环境
./run.py
访问 http://localhost:5000/ , 点击 Create 创建一个脚本,现在一个 sample 脚本被默认加载。
编写脚本
#!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2015-06-24 20:51:42 # Project: test from pyspider.libs.base_handler import * class Handler(BaseHandler): crawl_config = { } @every(minutes=24 * 60) def on_start(self): self.crawl('http://scrapy.org/', 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(), }
Handler(BaseHandler)
是脚本的主体,每个必须继承自 BaseHandler
on_start
是脚本执行的入口,当在 dashboard 上点击 run 时会被自动调用
@every
表示这个任务是定时执行的
self.crawl
用于控制链接抓取,使用 callback=self.index_page
指定用哪个函数解析抓取到的页面
def index_page(self, response)
回调函数可以通过访问 response
访问抓取到的数据。return
的内容会被采集到 resultdb
中。重载on_result(self, result)
函数可以修改这个行为。
您可以点击左侧的 Run
调试您的脚本
点击 Save
保存您的脚本
完整脚本编写指南:#TODO
执行任务
当您完成脚本编写,调试无误后,请先保存您的脚本!然后返回首页
点击脚本的 status
,将其修改为 DEBUG
或 RUNNING
任务状态会影响是否执行抓取。当你修改过脚本后,任务状态会自动变为 CHECKING
。
确认 rate/burst
都不为0
rate 用于控制每秒抓取页面的个数,burst 可以视为并发度控制。他们实际实现是令牌桶。
点击 Run
按钮
当您点击 Run
时,会触发执行 on_start
函数,现在任务已经运行起来了!
转载请注明:拈花古佛 » pyspider中文简单入门教程