Python:Xpath问题为for循环中的每个DIV获取值
我使用Python3.6来处理一大块HTML,我遇到的问题是下面的循环代码正在工作,但是Python:Xpath问题为for循环中的每个DIV获取值,python,python-3.x,xpath,Python,Python 3.x,Xpath,我使用Python3.6来处理一大块HTML,我遇到的问题是下面的循环代码正在工作,但是atag.xpath查询正在搜索整个HTML源代码,并返回数据大小的所有四个标记值 我试图做的是,当为for循环处理PAGE\u RAW时,对于包含项类的DIV的每个实例,它将找到具有填充类的子DIV,并拉出该标记的数据大小属性,如果在HTML源代码 HTML <div class="item"> <div class="padding" data-size="12"><
atag.xpath
查询正在搜索整个HTML源代码,并返回数据大小的所有四个标记值
我试图做的是,当为for
循环处理PAGE\u RAW
时,对于包含项类的DIV的每个实例,它将找到具有填充类的子DIV
,并拉出该标记的数据大小
属性,如果在HTML源代码
HTML
<div class="item">
<div class="padding" data-size="12"></div>
</div>
<div class="item">
<div class="padding" data-size="13"></div>
</div>
<div class="item">
<div class="padding" data-size="14"></div>
</div>
<div class="item">
<div class="padding" data-size="15"></div>
</div>
这里面临的问题是,在第二个xpath中,/
告诉它在文档中的任何地方搜索(不管当前节点是否是特定的div
,它总是从一开始就搜索)
若要查找当前节点下的任何节点,请将/
替换为/
(
指示搜索从当前节点开始,而不是从根节点开始)
/
和/
之间有什么区别?或者有什么区别吗?虽然//
将匹配任何后代(或自身),/
将只匹配子代。请查看第二个答案,解释得很清楚:
import lxml.html as LH
...
PAGE_RAW = driver.page_source
PAGE_RAW = LH.fromstring(PAGE_RAW)
for atag in PAGE_RAW.xpath("//div[contains(@class, 'item')]"):
data = atag.xpath("//div[contains(@class, 'padding')]/@data-size")
import lxml.html as LH
...
PAGE_RAW = driver.page_source
PAGE_RAW = LH.fromstring(PAGE_RAW)
for atag in PAGE_RAW.xpath("//div[contains(@class, 'item')]"):
data = atag.xpath(".//div[contains(@class, 'padding')]/@data-size")