XPath使用小结

使用scrapy爬虫,不可避免的需要对网页结构进行分析并提取,其中用到的一个重要的工具就是XPath。XPath可以帮助我们很方便的对html元素进行定位选择。

在Chrome中使用XPath

在chrome中使用XPath,只需要在开发者工具中点击控制台(Console)标签,然安徽使用$x功能就可以了。


1.png

比如获取所有的section标签,我们使用$x('//section'),控制台中就可以看到一个包含所有元素的Javascript数组。将光标移动到这个数组上,还可以看到被选择的元素被高亮显示。


2.png

至于这个表达式('//section')的规则是如何的,下面来粗略的介绍一下。

XPath表达式

/ 单斜杠

HTML文档的层级结构的最高级是标签。可以使用元素名和斜杠线选择任意元素。
以这个html文档为例:


12.png

获取body标签使用/html/body
获取body下的section标签使用/html/body/section,因为有5个section元素,所以这个结果是有5个元素的JavaScript数组。
可以使用[index]来获取这个数组的元素。
例如要获取第一个section标签,使用/html/body/section[1]
注意:这个地方index是从1开始计算的,而不是0,这跟一般的数组获取元素有点不同。

4.png

// 双斜杠

// 可以访问所有的同名元素
例如,要找到html中所有的section元素,使用//section即可


5.png

@ 访问属性

比如获取head中的charset属性

6.png
7.png

也可以只通过text()函数选择文字。

在Chrome浏览器中获得XPath表达式

提前应对网页发生改变

. 避免使用数组序号
. 用class抓取效果不一定好
. 数据指向的class优于排版指向的class
. id通常是最可靠的

你可能感兴趣的:(XPath使用小结)