表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
… | 选取当前节点的父节点。 |
. | 选取当前节点。 |
@ | 选取属性。 |
XPath 通配符可用来选取未知的 XML 元素。
通配符 | 描述 |
---|---|
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 | 结果 |
---|---|
/bookstore/* | 选取 bookstore 元素的所有子元素。 |
//* | 选取文档中的所有元素。 |
//title[@*] | 选取所有带有属性的 title 元素。 |
父(Parent)
每个元素以及属性都有一个父。
在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:
book> title>Harry Potter/title> author>J K. Rowling/author> year>2005/year> price>29.99/price> /book>
子(Children)
元素节点可有零个、一个或多个子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
book> title>Harry Potter/title> author>J K. Rowling/author> year>2005/year> price>29.99/price> /book>
同胞(Sibling)
拥有相同的父的节点
在下面的例子中,title、author、year 以及 price 元素都是同胞:
book> title>Harry Potter/title> author>J K. Rowling/author> year>2005/year> price>29.99/price> /book>
先辈(Ancestor)
某节点的父、父的父,等等。
在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:
bookstore> book> title>Harry Potter/title> author>J K. Rowling/author> year>2005/year> price>29.99/price> /book> /bookstore>
后代(Descendant)
某个节点的子,子的子,等等。
在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:
bookstore> book> title>Harry Potter/title> author>J K. Rowling/author> year>2005/year> price>29.99/price> /book> /bookstore>
爬取糗事百科
import requests # 导包 from lxml import etree import os base_url = 'https://www.qiushibaike.com/video/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36' } res = requests.get(url=base_url, headers=headers) html = res.content.decode('utf-8') # xpath解析 tree = etree.HTML(html) # 标题 content = tree.xpath('//*/a/div[@class="content"]/span/text()') # 视频 video_list = tree.xpath('//*/video[@controls="controls"]/source/@src') index = 0 for i in video_list: # 获取视频二进制流 video_content = requests.get(url= 'https:' + i,headers=headers).content # 标题 title_1 = content[0].strip('\n') # 将视频二进制写入文件 with open(f'Video/{title_1}.mp4','wb') as f: f.write(video_content) index += 1
到此这篇关于Python爬虫必备之XPath解析库的文章就介绍到这了,更多相关XPath解析库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!