在通过前两节的基本库获取到网页信息之后,我们需要用一些正则表达式或者解析库来提取所需要的信息。正则表达式在上文有所介绍,如果对正则表达式有所了解,会发现实际应用中,正则表达式匹配信息是十分繁琐的,并且很容易出错。
本文开始介绍一些常用的解析库,相较于正则表达式,解析库通过分析页面结构,高效的提取信息。
XPath
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。
导入lxml库
在命令行通过下面语句导入该库:
pip3 install lxml
常用方法
HTML读取:
from lxml import etree
test = etree.HTML(html)
获取标签:
使用test.xpath([])方法,传入参数如下:
//a:获取html下的所有 a 标签
/html/body/a:沿着节点顺序找 a 标签
/descendant::a:当前节点后代里面找 a 标签
中括号内则是进行筛选时传入的条件。
获取标签的属性,文本:
实例如下:
a_attribute_2= html.xpath('/html/body/a/@href')
在路径后加/@href即可提取属性。
a_text_2 = html.xpath('/html/body/a/text()')
在路径后加/text()即可获取文本。
Beautiful Soup
Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup 会帮你节省数小时甚至数天的工作时间。
导入Beautiful Soup 库
pip3 install beautifulsoup
常用方法
将一段文档传入 BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄。
实例如下:
from bs4 import BeautifulSoupimport requests
html= requests.get(‘http://www.jianshu.com/’).content
soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
result = soup('div')
在soup的构造方法中,可以设置使用的解析器或者解析文档类型,以及编码方法。
进行筛选时,可调用soup.find_all()方法提取。
pyquery
pyquery通过CSS选择器的方式分析界面,用法与jQuery类似。
扫码关注我们