重点介绍了基于Python的Requests HTTP库和BeautifulSoup网页解析库

Request

Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用

上面一句话 出自Requests官方文档的第一句,从而奠定了其逗逼的文档风格。类似的还有:

警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。

Request是一个基于urllib3的Python的Http库。这里就可以看出它的存在是为了取代urllib、urllib2等Http工具的江湖地位的,事实上确实如此,相对于前两者来说它是更高级的工具。比如urllib和urllib2配合使用的时候我们需要手动地用urlencode为POST表单数据编码或者手动为GET方式添加url的查询字符串,使用requests就不需要考虑这种问题。还有keep-alive和Http连接池的功能都是全自动化的。
它的官方文档简单明了,在这里可以找到

Beautiful Soup

当我学习用正则表达式抓取网页内容的时候,就在想这种对着每个页面反反复复的盯着看,都要长鸡眼了,就是为了写一个正则表达式,是不是效率太低也太容易出错了。Beautiful Soup这种工具很明显就是为了解决我的这种疑惑的。

它是一个用于从HTML和XML文档中提取数据的Python库,可以实现文档的导航、查找、修改,让我们从繁琐、低效、易错的正则表达式中解脱出来。它把HTML这种基于标签的文档组织成树的结构,方便我们用面向对象的方式获取内容。目前最新的是beautifulsoup4。

我的系统是Ubuntu16.04,安装Beautiful Soup:

sudo pip install beautifulsoup4

Beautiful Soup有中文版的文档,在这里
Beautiful Soup是一个获取文档内容的高层的封装,它是支持多种解析器的,默认的是Python标准库中的HTMLParser。第三方解析器支持lxml和html5lib,不同的解析器有各自的特点,官方文档中做出了对比的表格。在用html文档构造beautifulsoup对象的时候,可以指定解析器来解析文档:

from bs4 import  BeautifulSoup
soup = BeautifulSoup(open("index.html"),  "html.parser")

如果不指定而系统中又有多种解析器的话,系统会选择最合适的解析器来解析文档。
BeautifulSoup把HTML的每个节点都转换成Python对象,这些对象分为Tag , NavigableString , BeautifulSoup , Comment四个种类。
Tag:也就是xml或者HTML中的标签
NavigableString:称为“可以遍历的字符串”
Beautiful

测试网站:http://httpbin.org/

这是一个专门用于测试Http请求和相应的网站。在学习各种工具和方法的时候做实验尝试和验证是必不可少的环节,这种时候这个网站就排上了用场。它支持各种HTTP的场景,请求的响应内容都是以json编码的。例如:

$ curl http://httpbin.org/ip

{"origin": "24.127.96.129"}

事实上,Requests的官网就是是它来讲解的例子。

版权声明:本文为mooba原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mooba/p/6139437.html