安装
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中文简单入门教程