xpath是爬虫中一种分析页面数据的方法之一,可以补全非标准的html页面,方便获取数据,运用起来也比较简单,
首先呢,先说一下补全非标准的html
![](https://img.haomeiwen.com/i13103448/056c168735d2cb66.png)
这里面的html是我自己写的一段简单的不完整的html,现在运行一下这段代码,可以看到缺失的代码已经自动补全了,像这种模块还有很多,例如:xml,bs4等。
![](https://img.haomeiwen.com/i13103448/5732a11c3f0cb45b.png)
下面开始获取页面中的内容了
先访问页面,下载页面源码。这里我就用requests了,以这个网址为例:https://search.jd.com/Search?keyword=%E8%A1%A3%E6%9C%8D&enc=utf-8&wq=%E8%A1%A3%E6%9C%8D&pvid=d3ff37dc76574151b4e63087334dfb24
![](https://img.haomeiwen.com/i13103448/86036e983b2cb0ba.png)
运行一下就可以看到我们需要的源码已经下载下来了,为了防止我们下载的源码有缺失,进而影响我们的数据获取,我们使用xpath将页面补全。
html = etree.HTML(r)
现在我们就可以开始获取数据了,首先要先分析一下我们需要的数据在页面的那个结构中。
假如我们需要页面商品的链接
![](https://img.haomeiwen.com/i13103448/e43f81d632acc932.png)
我们可以看到每个商品在一个div中,而这个div的class属性是p-img
那么我们就可以用xpath根据这个属性去获取数据
url =html.xpath("//div[@class='p-img']/a/@href")
这段代码是匹配:页面中class属性等于p-img的div,这个div中的a的href属性中的数据,也就是商品链接了,是不是很简单呢。其他数据也可以通过这种方法进行匹配
打印一下我们的url
![](https://img.haomeiwen.com/i13103448/c1cf6893c246ccfe.png)
将页面中的所有符合的数据返回成了一个列表。
具体的使用方法可以参考官方文档。
网友评论