网络爬虫框架
项目描述
什么是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
项目详情
关闭
grab-0.6.41.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 86aeba303179c1ec8779bd28d30d99458dc450747e537f2735965788651364e3 |
|
MD5 | e39451e99d28c03c01ad513b9b049272 |
|
BLAKE2b-256 | 2687c0b939da311bed38c0c073fd61675cfbe4ba585c2a04370a5b7e106a2639 |