Xpath - 我什至只得到 1 个元素 - 检查器工具显示 7
Xpath - I only get 1 element back even - the inspector tools shows 7
我正在尝试循环 Scrapy 中的 Xpath,它看起来像这样:
for entry in response.xpath('normalize-space(//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]//span[@class="times"]/text())'):
print(entry.get())
print(len(response.xpath('normalize-space(//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]//span[@class="times"]/text())')))
结果是这样的
9:00 AM to 12:00 PM
1
奇怪的是,我在浏览器检查器工具中显示了 7 child 秒,每个工作日一个 child。
为什么我只得到一个结果?我想提取所有工作日。
我不明白我的错误,也许你会给我带来正确方法的提示。
干杯!
//提示后,我使用下面的代码:
for entry in response.xpath('//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]'):
print(entry.xpath('normalize-space(//span[@class="times"])').get())
现在我得到了 7 个结果,但始终是第一个 9:00 AM to 12:00 PM
。
这个 XPath:
'normalize-space(//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]//span[@class="times"]/text())')
:
因为 normalize-space()
函数全白 space 折叠,所以只会给出一个结果。
因此,要获取这些跨度的实际文本节点,请移除 XPath 周围的规范化-space。
第二个XPath以双斜杠开头,意思是从根开始搜索所有节点。要从当前上下文搜索,请使用 .
有关 // 与 .// 的更多信息,请参阅
我正在尝试循环 Scrapy 中的 Xpath,它看起来像这样:
for entry in response.xpath('normalize-space(//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]//span[@class="times"]/text())'):
print(entry.get())
print(len(response.xpath('normalize-space(//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]//span[@class="times"]/text())')))
结果是这样的
9:00 AM to 12:00 PM
1
奇怪的是,我在浏览器检查器工具中显示了 7 child 秒,每个工作日一个 child。
为什么我只得到一个结果?我想提取所有工作日。 我不明白我的错误,也许你会给我带来正确方法的提示。
干杯!
//提示后,我使用下面的代码:
for entry in response.xpath('//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]'):
print(entry.xpath('normalize-space(//span[@class="times"])').get())
现在我得到了 7 个结果,但始终是第一个 9:00 AM to 12:00 PM
。
这个 XPath:
'normalize-space(//div[@id="Content"]//div[@id="programDetails"]//div[@id="selfReportedProgramDetails"]//div[@id="hoursOfOperation"]//span[@class="hoursItem"]//span[@class="times"]/text())')
:
因为 normalize-space()
函数全白 space 折叠,所以只会给出一个结果。
因此,要获取这些跨度的实际文本节点,请移除 XPath 周围的规范化-space。
第二个XPath以双斜杠开头,意思是从根开始搜索所有节点。要从当前上下文搜索,请使用 .
有关 // 与 .// 的更多信息,请参阅