- 看了阿里云云栖社的一片文章,和其他地方的资料,然后对常用的爬虫框架和项目做了下整理。
常用Python爬虫框架简介
- Scrapy
# Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。
# 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
# 用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。
# 文档地址:https://scrapy.org/
- PySpider
# pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。
# 文档地址:https://github.com/binux/pyspider
- Crawley
# Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
# 文档地址:http://project.crawley-cloud.com/
- Portia
# Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。
# 文档地址:https://github.com/scrapinghub/portia
- Newspaper
# Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。
# 文档地址:https://github.com/codelucas/newspaper
- Beautiful Soup
# Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.
# 它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.
# Beautiful Soup会帮你节省数小时甚至数天的工作时间。
# 文档地址: https://www.crummy.com/software/BeautifulSoup/bs4/doc/
- Grab
# Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。
# http://docs.grablib.org/en/latest/#grab-spider-user-manual.
- Cola
# Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。
# 文档地址:https://github.com/chineking/cola
23个爬虫项目
1、公众号爬虫
基于搜狗微信搜索的公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。
github地址:https://github.com/Chyroc/WechatSogou
2、豆瓣读书爬虫
可以爬下豆瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价人数>1000的高分书籍;可依据不同的主题存储到Excel不同的Sheet ,采用User Agent伪装为浏览器进行爬取,并加入随机延时来更好的模仿浏览器行为,避免爬虫被封。
github地址:https://github.com/lanbing510/DouBanSpider
3、知乎爬虫
此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo
github地址:https://github.com/LiuRoy/zhihu_spider
4、Bilibili用户爬虫
总数据数:20119918,抓取字段:用户id,昵称,性别,头像,等级,经验值,粉丝数,生日,地址,注册时间,签名,等级与经验值等。抓取之后生成B站用户数据报告。
github地址:https://github.com/airingursb/bilibili-user
5、新浪微博爬虫
主要爬取新浪微博用户的个人信息、微博信息、粉丝和关注。代码获取新浪微博Cookie进行登录,可通过多账号登录来防止新浪的反扒。主要使用 scrapy 爬虫框架。
github地址:https://github.com/LiuXingMing/SinaSpider
6、小说下载分布式爬虫
使用scrapy,Redis, MongoDB,graphite实现的一个分布式网络爬虫,底层存储MongoDB集群,分布式使用Redis实现,爬虫状态显示使用graphite实现,主要针对一个小说站点。
github地址:https://github.com/gnemoug/distribute_crawler
7、中国知网爬虫
设置检索条件后,执行src/CnkiSpider.py抓取数据,抓取数据存储在/data目录下,每个数据文件的第一行为字段名称。
github地址:https://github.com/yanzhou/CnkiSpider
8、链家网爬虫
爬取北京地区链家历年二手房成交记录。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。
github地址:https://github.com/lanbing510/LianJiaSpider
9、京东爬虫
基于scrapy的京东网站爬虫,保存格式为csv。
github地址:https://github.com/taizilongxu/scrapy_jingdong
10、QQ 群爬虫
批量抓取 QQ 群信息,包括群名称、群号、群人数、群主、群简介等内容,最终生成 XLS(X) / CSV 结果文件。
github地址:https://github.com/caspartse/QQ-Groups-Spider
11、乌云爬虫
乌云公开漏洞、知识库爬虫和搜索。全部公开漏洞的列表和每个漏洞的文本内容存在MongoDB中,大概约2G内容;如果整站爬全部文本和图片作为离线查询,大概需要10G空间、2小时(10M电信带宽);爬取全部知识库,总共约500M空间。漏洞搜索使用了Flask作为web server,bootstrap作为前端。
https://github.com/hanc00l/wooyun_public
12、hao123网站爬虫
以hao123为入口页面,滚动爬取外链,收集网址,并记录网址上的内链和外链数目,记录title等信息,windows7 32位上测试,目前每24个小时,可收集数据为10万左右
github地址:https://github.com/simapple/spider
13、机票爬虫(去哪儿和携程网)
Findtrip是一个基于Scrapy的机票爬虫,目前整合了国内两大机票网站(去哪儿 + 携程)。
github地址:https://github.com/fankcoder/findtrip
14、基于requests、MySQLdb、torndb的网易客户端内容爬虫
github地址:https://github.com/leyle/163spider
15、豆瓣电影、书籍、小组、相册、东西等爬虫集
github地址:https://github.com/fanpei91/doubanspiders
16、QQ空间爬虫,包括日志、说说、个人信息等,一天可抓取 400 万条数据
github地址:https://github.com/LiuXingMing/QQSpider
17、百度mp3全站爬虫,使用redis支持断点续传
github地址:https://github.com/Shu-Ji/baidu-music-spider
18、 淘宝和天猫的爬虫,可以根据搜索关键词,物品id来抓去页面的信息,数据存储在mongodb。
github地址:https://github.com/pakoo/tbcrawler
19、一个股票数据(沪深)爬虫和选股策略测试框架。根据选定的日期范围抓取所有沪深两市股票的行情数据。支持使用表达式定义选股策略。支持多线程处理。保存数据到JSON文件、CSV文件。
github地址:https://github.com/benitoro/stockholm
20、百度云盘爬虫
github地址:https://github.com/k1995/BaiduyunSpider
21、社交数据爬虫。支持微博,知乎,豆瓣。
github地址:https://github.com/Qutan/Spider
22、Python爬虫代理IP池(proxy pool)。
github地址:https://github.com/jhao104/proxy_pool
23、爬取网易云音乐所有歌曲的评论。
github地址:https://github.com/RitterHou/music-163