当我们爬取网页的时候,里面的数据是杂乱的,我们实际上只需要对应页面中的某些内容,那么我们如何将其筛选出来呢?我们使用xpath就可以准确的采集到我们需要的数据,从而摒弃那些对我们“无用”的数据。

1、安装xpath

推荐主流浏览器:Google浏览器

点击Google浏览器的扩展程序,然后再点击左上角的三个横杠,在弹出的页面中点击左下角的打开Chrome网上应用商店,如下图所示:

python爬虫获取div盒子内容 python爬虫获取指定内容_python爬虫获取div盒子内容

然后在里面搜索XPath Helper,如下图所示:

python爬虫获取div盒子内容 python爬虫获取指定内容_python爬虫获取div盒子内容_02

点击右边的安装即可,我这里是因为安装过,所以显示的是从Chrome中删除

安装完毕之后的效果如下,在浏览器右上角点击之后,界面如下(如果你安装完成之后,点击XPath Helper按钮没反应,刷新下页面即可,再次重开浏览器就不会有这样的问题):

python爬虫获取div盒子内容 python爬虫获取指定内容_chrome_03

左边我们输入XPath语法之后,右边框就会显示出来具体筛选出来的数据。

2、Xpath语法

(1)选取节点

表达式

描述

示例

结果

nodename

选取此节点的所有子节点

bookstore

选取bookstore下所有的子节点

/

如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点

/bookstore

选取根元素下所有的bookstore节点

//

从全局节点中选择节点,随便在哪个位置

//book

从全局节点中找到所有的book节点

@

选取某个节点的属性

//book[@price]

选择所有拥有price属性的book节点

.

当前节点

./a

选取当前节点下的a标签

(2)谓语

路径表达式

描述

/bookstore/book[1]

选取bookstore下的第一个子元素

/bookstore/book[last()]

选取bookstore下的倒数第二个book元素。

bookstore/book[position()❤️]

选取bookstore下前面两个子元素。

//book[@price]

选取拥有price属性的book元素

//book[@price=10]

选取所有属性price等于10的book元素

(3)通配符

通配符

描述

示例

结果

*

匹配任意节点

/bookstore/*

选取bookstore下的所有子元素。

@*

匹配节点中的任何属性

//book[@*]

选取所有带有属性的book元素。

(4)多个路径选取

//bookstore/book | //book/title
# 选取所有book元素以及book元素下所有的title元素

(5)使用方法

咋看懂呢,如果说一个页面返回了很多内容,一点点去从上往下翻看也是比较麻烦的,其实我们可以使用浏览器快速定位到具体的XPath值,如下图:

(5.1)选中

浏览器访问到具体页面之后,右击选择检查,弹出如下界面;

python爬虫获取div盒子内容 python爬虫获取指定内容_python爬虫获取div盒子内容_04

然后点击如下框中的内容:

python爬虫获取div盒子内容 python爬虫获取指定内容_爬虫_05

(5.2)复制

然后我们就会发现会跳到具体的html代码中,这个时候我们右击复制–复制Xpath,这个时候我们就获取到了我们想筛选出来的数据的具体XPath路径了;

比如我这里复制出来的值如下:

//*[@id="js_content"]/section[1]/blockquote[1]/p

我们可以使用浏览器中我们安装的Xpath Helper检查下,截图如下:

python爬虫获取div盒子内容 python爬虫获取指定内容_linux_06