python-玩转数据-爬虫常用库和框架
一、请求库:实现 HTTP 请求操作
urllib库:一系列用于操作URL的功能,Python的内置库,直接使用方法import导入即可。Urllib 库中有这么 4 个模块
1、urllib.request():request模块是我们用的比较多的,就是用它来发起请求,模拟浏览器
2、urllib.error():error模块就是当我们在使用 request 模块遇到错了,就可以用它来进行异常处理
3、urllib.parse():parse模块就是用来解析我们的 URL 地址的,比如解析域名地址啦,URL指定的目录等
4、urllib.robotparse():这个用的就比较少了,它就是用来解析网站的 robot.txt
Requests库这个库比 urllib 要牛逼一丢丢的,毕竟 Requests 是在 urllib 的基础上搞出来的。通过它我们可以用更少的代码模拟浏览器操作。requests是一个很实用的Python HTTP客户端库,是Python语言的第三方库(测试网站http://www.httpbin.org/ 这个网站可以在页面上返回所发送 请求 的相关信息,十分适合练习使用)
1、requests.request() 构造一个请求,支撑以下各方法的基础方法
2、requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
3、requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
4、requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
5、requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
6、requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
7、requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE
selenium库:是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
selenium用于爬虫,主要是用来解决javascript渲染的问题
aiohttp库:基于 asyncio 实现的 HTTP 框架,提供异步的web服务的库。异步操作借助于 async/await 关键字,使用异步库进行数据抓取,可以大大提高效率。与以前不同主要在于
首先在导入库的时候,我们除了必须要引入 aiohttp 这个库之外,还必须要引入 asyncio 这个库,因为要实现异步爬取需要启动协程,而协程则需要借助于 asyncio 里面的事件循环来执行。除了事件循环,asyncio 里面也提供了很多基础的异步操作。
二、解析库:从网页中提取信息
re:使用正则表达式(regex)库提取信息,Python的内置库。
lxml:支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。lxml库支持XPath语法的使用,xpath 是一门在 XML 文档中查找信息的语言。xpath 可用来在 XML 文档中对元素和属性进行遍历。
beautifulsoup:是一个网络解析库,依赖于lxml库。html 和 XML 的解析,从网页中提取信息,同时拥有强大的API和多样解析方式。官方推荐使用beautifulsoup4进行开发
JSON
json模块支持JSONPath语法的使用。
三、存储库:Python 与数据库交互
pymysql:一个纯 Python 实现的 MySQL 客户端操作库。
pymongo:一个用于直接连接 mongodb 数据库进行查询操作的库。
redisdump:一个用于 redis 数据导入/导出的工具。基于 ruby 实现的,因此使用它,需要先安装 Ruby。
四、爬虫框架
1、Scrapy
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。
项目地址:https://scrapy.org/
2、PySpider
pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。
项目地址:https://github.com/binux/pyspider
3、Crawley
Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为jsON、XML等。
项目地址:http://project.crawley-cloud.com/
4、Portia
Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。
项目地址:https://github.com/scrapinghub/portia
5、Newspaper
Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。
项目地址:https://github.com/codelucas/newspaper
资源搜索网站大全 https://www.renrenfan.com.cn
6、Beautiful Soup
Beautiful Soup 是一个可以从html或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。
项目地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
7、Grab
Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与html文档的DOM树进行交互。
项目地址:http://docs.grablib.org/en/latest/#grab-spider-user-manual
8、Cola
Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的
五、Web 框架库
flask:轻量级的 web 服务程序,简单,易用,灵活,主要来做一些 API 服务。做代理时可能会用到。
django:一个 web 服务器框架,提供了一个完整的后台管理,引擎、接口等,使用它可做一个完整网站。