PySpider──Apache 许可 Python 编写的 JavaScript 开源 Web 爬虫系统
PySipder 是一个用 Python 编写的专业开源 Web 爬虫系统。PySipder 采用 Apache v2 许可协议。
主要特点如下:
01、用 Python 编写脚本,可用任何 HTML 解析包 (内置 pyquery),提供强大的 API;
02、强大的 Web UI 界面编写调试/起停脚本、脚本编辑、监控执行状态、项目管理、查看历史记录及结果;
03、支持采用 SQLAlchemy 作后台的数据库,包括:MySQL、MongoDB、Redis、SQLite、PostgreSQL;
04、支持采用 RabbitMQ、Beanstalk、Redis 及 Kombu 作消息队列;
05、支持任务优先级、重试、定期抓取、按时间重新抓取等;
06、分布式架构,组件可替换,支持 “单机/分布式” 部署,支持 Docker 部署;
07、支持抓取 JavaScript 页面;
08、支持 Python 2.x & 3.x;
09、强大的调度控制功能;
简单示例代码
- 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)
- def detail_page(self, response):
- return {
- "url": response.url,
- "title": response.doc('title').text(),
- }
复制代码
版本历史
# | 时间 | 版本 | 新功能 | 备注 | 01 | | V0.4.0 | 本地模式,从文件加载脚本;
作为框架进行工作 (所有组件运行在一进程中,而非线程);
| 支持 redis 数据库;
可视扒取接口,类似可视网站扒取工具 Portia。 | | | | | | | | | | |
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。
|