一般来说,我们在浏览器输入某个网站的网址,就会展现出一个精致的网页,其实这是经过浏览器的解析过了的,原本的网页文件是html文件来的,里面有着许多标签和文本内容,而我们想要获得的文本内容就在这些标签中,如果我们想要获得网页中需要的文本,就要去定位需要的文本在哪些标签中,并且定位这些标签又在整个网页结构的哪个位置,这样才是我们获取数据的整套流程
语法
提取网页中的核心信息方法有三种:正则、bs4(BeautifulSoup4)、xpath
三种提取语法各有各的好处,这里只用xpath,因为可以搭配我们的谷歌插件xpath-helper使用,其实掌握一种就足够了,多了,反而会弄混乱。
Xpath语法
1 标签路径
绝对路径(// 为绝对路径)
语法 | 含义 |
//div | 获取整个网页中的div标签 |
//a | 获取整个网页中的a标签 |
相对路径(./为相对路径)
语法 | 含义 |
./div | 可以理解为获取某个标签中的div标签,这时就可以用相对路径 |
./a | 可以理解为获取某个标签中的div标签,这时就可以用相对路径 |
2、标签查找
1.通过绝对/相对路径查找标签
语法 | 含义 |
//span/span/a | 获取整个网页中的span标签下的span标签下的a标签 |
//li/div/a | 获取整个网页中的li标签下的div标签下的a标签 |
2.查找属性,有时我们需要筛选特定的标签
格式:
标签名[@属性名=属性值] |
比如:
语法 | 含义 |
//a[@class="j_th_tit"] | 获取整个网页中的class属性值为j_th_tit的a标签 |
//span/a[@class="frsauthor"] | 获取整个网页中的span标签下的class属性值为j_th_tit的a标签 |
3、读取标签中的属性值
格式:
标签名/@属性名 |
比如(a链接的href属性,img图片的src属性):
语法 | 含义 |
//a[@class="j_th_tit"]/@href | 获取整个网页中的class属性值为j_th_tit的a标签的href属性值 |
//img/@src | 获取整个网页中的img标签的src属性值 |
4、获取内容
有时我们想要获取的数据不在标签的属性值中,而是在标签之间,比如:<div>Hello Word</div>
格式:
标签名/text() |
比如:
语法 | 含义 |
//a/text() | 获取整个网页中的a标签之间的内容 |