来一段代码先:
importrequestsfrom lxml importetree
html=requests.get('https://python123.io/ws/demo.html').text
tree=etree.HTML(html)print(tree.xpath('//p[@class="title"]/b/text()'))#列表类型
print(tree.xpath('//a[@class="py1"]/@href'))#读取a标签下的href属性值,列表类型
BeautifulSoup已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法。如果对 BeautifulSoup 使用不太习惯的话,可以尝试下 Xpath
安装
pip install lxml
XPath语法
XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。
节点关系
(1)父(Parent)
每个元素以及属性都有一个父。
在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:
Harry PotterJ K. Rowling
2005
29.99
(2)子(Children)
元素节点可有零个、一个或多个子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
Harry PotterJ K. Rowling
2005
29.99
(3)同胞(Sibling)
拥有相同的父的节点
在下面的例子中,title、author、year 以及 price 元素都是同胞:
Harry PotterJ K. Rowling
2005
29.99
(4)先辈(Ancestor)
某节点的父、父的父,等等。
在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:
Harry PotterJ K. Rowling
2005
29.99
(5)后代(Descendant)
某个节点的子,子的子,等等。
在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:
Harry PotterJ K. Rowling
2005
29.99
选取节点
XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿