1. 什么是Xpath?
1.1 概念
Xpath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言
Xpath也可以用于定位html的标签
Xpath就像是一个地址,可以找到网页代码里你需要的数据
1.2 如何在网页中找到xpath路径?
以豆瓣网为例:https://book.douban.com/tag/%E7%BB%8F%E5%85%B8
在浏览器中打开检查,可以找到标签位置后,右键copy xpath:
获取有关内容的Xpath举例
豆瓣图书标签:经典
x1 = '//*[@id="content"]/h1'
#一个网址里面 id 只能有一个
小王子(书名)
x2 = '//*[@id="subject_list"]/ul/li[1]/div[2]/h2/a'
书简介(小王子)
x3 = '//*[@id="subject_list"]/ul/li[1]/div[2]/p'
封面(小王子)
x4 = '//*[@id="subject_list"]/ul/li[1]/div[1]/a/img'
2. Xpath基础
2.1 html基本标签
<a> </a> | 定义超链接,用于一张页面链接到另一张页面 |
---|---|
<h1> </h1> | 文本标题标签,最大的标签,h后可接1到6,有6层选择 |
<p> </p> | 段落标记标签 |
<div> </div> | 可定义文档中的区域或节,可以把文档分割为不同部分,是一个块级元素 |
<ul> </ul> | 创建一个列表 |
<li> </li> | 创建列表内容项 |
<input> | 用于搜集用户信息,可以是文本字段,复选框,按钮等 |
<img> </img> | 向网页中嵌入一幅图像,从网页中链接图像 |
<table> </table> | 创建一个表格 |
<tr> </tr> | 表格中的每一行 |
<th> </th> | 设置表格头,通常为黑体居中文字 |
<option> </option> | 设置每个表单项的内容/选项 |
xpath就是在定位html的标签位置
eg: //body/div[8]/div[1]/div[3]/div[1]/div[1]/div[3]/ul[1]/li
2.2 Xpath基本语法
/ | 从根节点选取 |
---|---|
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
@ | 选取属性 |
* | 匹配任何元素节点 |
@* | 匹配任何属性 |
//* | 选择文档中的所有元素节点 |
//a[@*] | 选择所有带属性的a节点 |
2.3 路径问题
完整路径:是从根节点开始,不常用
eg: /html/body/div[2]/div[2]/div[2]/ul/li[1]/img
相对路径:一般会使用class或者id定位
eg: //ul[@class=“toturial-list video-list”]/li/img
2.4 属性和位置选择
选择属性
eg://*[@id=“content”]/h1
选择位置
eg://*[@id=“subject_list”]/ul/li[1]
3. Xpath工具包安装:lxml
首先查看电脑中有没有lxml工具包:pip show lxml
直接安装:pip install lxml
4. BeautifulSoup如何调用Xpath解析器?
BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml
BeautifulSoup支持多种解析器
如何使用?
soup = BeautifulSoup(url.text,'lxml')
也就是解答了最开始学习爬虫时候为啥后面要加上 ‘lxml’ 的问题。