requests
1.requests是一个强大的Python第三方Http库,基于httplib和urllib3,接口清晰易用,功能十分强大。
###1. 安装
pip install requests或者easy_install requests
###2. 基本使用
在ipython中利用自动补全看下调用requests之后返回的response对象的一些属性:
In [1]: import requests
In [2]: r = requests.get('https://api.github.com')
In [3]: r.
r.apparent_encoding r.history r.raw
r.close r.is_redirect r.reason
r.connection r.iter_content r.request
r.content r.iter_lines r.status_code
r.cookies r.json r.text
r.elapsed r.links r.url
r.encoding r.ok
r.headers r.raise_for_status
快速入门:http://requests-docs-cn.readthedocs.io/zh_CN/latest/user/quickstart.html
高级的用法:http://requests-docs-cn.readthedocs.io/zh_CN/latest/user/advanced.html
lxml
安装方法(很多同学在安装过程中遇到了问题),见我的上一篇博客。
使用requests库获取到网页内容后,再通过lxml解析,也可通过BeautifulSoup等等工具
lxml是基于C语言库libxml2和libxslt的python化绑定,其对XML(HTMl)有强大的处理能力,并且向下兼容Python的ElementTree API,支持Xpath和BeautifulSoup解析, 使用起来非常方便。
官方教程:http://lxml.de/
下面是一个在Windows平台下用python3.5用lxml解析HTML的例子,lxml通过xpath表达式来获取数据
(详见:http://www.cnblogs.com/descusr/archive/2012/06/20/2557075.html):
from lxml import etree
html = '''
<html>
<head>
<meta name="content-type" content="text/html; charset=utf-8" />
<title>友情链接查询 - 站长工具</title>
<!-- uRj0Ak8VLEPhjWhg3m9z4EjXJwc -->
<meta name="Keywords" content="友情链接查询" />
<meta name="Description" content="友情链接查询" />
</head>
<body>
<h1 class="heading">Top News</h1>
<p style="font-size: 200%">World News only on this page</p>
Ah, and here's some more text, by the way.
<p>... and this is a parsed fragment ...</p>
<a href="http://www.cydf.org.cn/" rel="nofollow" target="_blank">青少年发展基金会</a>
<a href="http://www.4399.com/flash/32979.htm" target="_blank">洛克王国</a>
<a href="http://www.4399.com/flash/35538.htm" target="_blank">奥拉星</a>
<a href="http://game.3533.com/game/" target="_blank">手机游戏</a>
<a href="http://game.3533.com/tupian/" target="_blank">手机壁纸</a>
<a href="http://www.4399.com/" target="_blank">4399小游戏</a>
<a href="http://www.91wan.com/" target="_blank">91wan游戏</a>
</body>
</html>
'''
page = etree.HTML(html.lower())
hrefs = page.xpath(u"//a")
for href in hrefs:
# print(href.attrib)
print(href.text)