跳转到主要内容

网络爬虫框架

项目描述

https://travis-ci.org/lorien/grab.png?branch=master https://ci.appveyor.com/api/projects/status/uxj24vjin7gptdlg https://coveralls.io/repos/lorien/grab/badge.svg?branch=master https://api.codacy.com/project/badge/Grade/18465ca1458b4c5e99026aafa5b58e98 https://readthedocs.org/projects/grab/badge/?version=latest

什么是Grab?

Grab是一个Python网络爬虫框架。Grab提供了一些有用的方法来执行网络请求、抓取网站和处理抓取的内容

  • 自动cookies(会话)支持

  • 带/不带授权的HTTP和SOCKS代理

  • Keep-Alive支持

  • IDN支持

  • 用于处理网页表单的工具

  • 易于多部分文件上传

  • 灵活自定义HTTP请求

  • 自动字符集检测

  • 使用XPath查询从HTML文档的DOM树中提取数据的强大API

  • 异步API,可进行成千上万的并发查询。这个库的部分称为Spider。请查看以下Spider功能列表。

  • Python 3兼容

Spider是编写网站爬虫的框架。功能

  • 规则和约定,用于在单独的代码块中组织请求/解析逻辑

  • 多并行网络请求

  • 自动处理网络错误(失败的作业返回到任务队列)

  • 您可以使用Grab API创建网络请求并解析响应(见上方)

  • HTTP代理支持

  • 将网络结果缓存到永久存储

  • 任务队列的不同后端(内存、redis、mongodb)

  • 用于调试和收集统计信息的工具

Grab示例

import logging

from grab import Grab

logging.basicConfig(level=logging.DEBUG)

g = Grab()

g.go('https://github.com/login')
g.doc.set_input('login', '****')
g.doc.set_input('password', '****')
g.doc.submit()

g.doc.save('/tmp/x.html')

g.doc('//ul[@id="user-links"]//button[contains(@class, "signout")]').assert_exists()

home_url = g.doc('//a[contains(@class, "header-nav-link name")]/@href').text()
repo_url = home_url + '?tab=repositories'

g.go(repo_url)

for elem in g.doc.select('//h3[@class="repo-list-name"]/a'):
    print('%s: %s' % (elem.text(),
                      g.make_url_absolute(elem.attr('href'))))

Grab::Spider示例

import logging

from grab.spider import Spider, Task

logging.basicConfig(level=logging.DEBUG)


class ExampleSpider(Spider):
    def task_generator(self):
        for lang in 'python', 'ruby', 'perl':
            url = 'https://www.google.com/search?q=%s' % lang
            yield Task('search', url=url, lang=lang)

    def task_search(self, grab, task):
        print('%s: %s' % (task.lang,
                          grab.doc('//div[@class="s"]//cite').text()))


bot = ExampleSpider(thread_number=2)
bot.run()

安装

$ pip install -U grab

有关在不同平台上安装Grab的详细信息,请参阅此处 http://docs.grablib.org/en/latest/usage/installation.html

文档和帮助

文档:http://docs.grablib.org/en/latest/

邮件列表(主要是俄语):http://groups.google.com/group/python-grab/

贡献

要报告错误,请使用GitHub问题跟踪器: https://github.com/lorien/grab/issues

如果您想在Grab中开发新功能,请使用问题跟踪器来描述您想做什么,或者通过以下邮箱联系我:lorien@lorien.name

项目详情


发布历史 发布通知 | RSS源

下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

grab-0.6.41.tar.gz (1.1 MB 查看哈希值)

上传时间

由以下机构支持