Python lxml包下面的xpath基本用法

Python lxml包下面的xpath基本用法,第1张

对于网页数据抓取,有BeautifulSoup、lxml以及正则表达式三种方法,其中正则表达式过于复杂,而beautifulsoup和lxml使用起来较为方便。以前简单使用过beautifulsoup(美味汤),后面为了扩展一下,熟悉一下lxml进行数据抓取。

先贴一个lxml的简单框架:

其中,最主要的在于xpath路径的获取和解析,而XPath就是地址,具体地,就是需要知道所要寻找的内容处在哪个地址下。一般而言,我们可以根据开发者工具来定位我们需要的元素,然后右击选择其所在xpath,选择初步的路径,如下图所示,

这只是一种简单的方法,更重要的,需要掌握xpath的语法规则,下面分别论述。

使用xpath获取信息,主要包括获取本文和获取属性,基本用法为

对比可以看出,一个是采用text()获取文本,一个是采用@属性获取属性值。而前面标签后面方括号就是来对标签进行筛选的。一般而言,通过选择器可以获取诸如/html/body/div[@class="useful"]/ul/li/text()的信息,但是开头的信息没有标志性,采用//div[@class="useful"]/ul/li/text()即可。

这个地方即涉及到了xpath的语法选择,主要包括以下几点:

而在选择器方面,包括以下几个

除此之外,在获取了一个元素之后,我们需要获取其下面元素的属性,即要对基于xpath获取的元素再次采用xpath,此时的获取方式为:

另外,我们也可以获取节点下面所有的字符串,方法为string(),示例为:

懒得打字了,下面的截图来自W3Cschool, >var oIpt = documentgetElementsByTagName('input')

oIpt[0]onclick=function(){

alert(thisid)

}

html部分

<input type="button" id="myid" value="点击" name="">

输入同理

1、首先自己编写了一个网页。

2、如图,在浏览器中打开网页。然后//div,就可以找到页面中的所有div了,因为//表示的是任意目录下查找。如图,页面有两个div,所以可以找到两个。

3、还可以用类来排除多余的div,比如要查找类为a的div,可以在div后面用[@class="类名"]来指定,这样没有类名a的div就会被过滤掉,当然,还可以用id,把class改为[@id="id名"]即可。

4、那么如果想找div下面的a标签怎么办,同样,还是用//,这样div下面的非a标签就会被跳过,直接去找a标签。

5、如果要获取a标签的href,那么可以获取到a标签后用/@href即可获得。

6、如果是获取文本的话,可以用text()这个方法,就会得到a标签里面的内容。

7、如图,斜杠/表示的是获取子元素,比如div下面有两个子元素p,那么//div[2]/p获取的就是第二个div的子元素p。这样简单的xpath就分析完了。

1、Xpath也可以使用元素的属性值来定位,以百度输入框和搜索按钮为例

2、通过id属性值来定位:注释://表示在当前页面的某个目录下,input表示定位元素的标签名,[@id='kw'],表示这个元素的id属性值等于kw

3、通过name和class属性值来定位:如果不想指定标签名,则也可以用代替,当然,使用Xpath不局限于id,name和class这三个属性值,元素的任意属性值都可以使用,只要它是唯一的标识元素

4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯一可以标识属性的值,也可以拿来使用

5、使用逻辑运算符。如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。例如,假如要查找第一行元素,则:

大概是这样的吧 可以试试

jquery有个 parents()

比如选了一个div id为test,想整xpath的话 $("#test")parents();这样获取的是一个数组,

var aa = [];

$('#test')parents()each(function(){

aapush(thistagName);

});

获取标签名后 就可以替换成xpath了 不过需要注意的是 这个不止获取到body 最后一个元素应该是到html,也不太确定,反正在firefox上是这样的

你应该是写错了吧,你改成 //div[@class="proLis"]//span/text() 试试。单斜杆表示只取其儿子辈的节点,你的span标签都是N辈了

再说,没有必要自己写,你可以在chrome浏览器装一个ChroPath插件,点击元素,然后就会出来相应的xpath表达式。

以上就是关于Python lxml包下面的xpath基本用法全部的内容,包括:Python lxml包下面的xpath基本用法、如何实现在网页中点击或者输入时获取此元素的id或者xpath之类、xpath能获取div下的所有tr中的td内容么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9609558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存