梦想还是要有的, 万一实现了呢?

pyspider中文简单入门教程

Python 拈花古佛 12855℃ 0评论 繁體

安装

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,将其修改为 DEBUGRUNNING

 

任务状态会影响是否执行抓取。当你修改过脚本后,任务状态会自动变为 CHECKING

确认 rate/burst 都不为0

 

rate 用于控制每秒抓取页面的个数,burst 可以视为并发度控制。他们实际实现是令牌桶。

点击 Run 按钮

 

当您点击 Run 时,会触发执行 on_start 函数,现在任务已经运行起来了!

转载请注明:拈花古佛 » pyspider中文简单入门教程

喜欢 (5)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址