python - 无法从 xpath python 获取值

标签 python html xpath web-scraping html-parsing

我想从页面获取值:http://www.tabele-kalorii.pl/kalorie,Actimel-cytryna-miod-Danone.html 我可以从第一部分获取所有值,但无法从表“Wartości odżywcze”获取值

我使用这个xpath:

''.join(tree2.xpath("//html/body/div[1]/div[3]/article/div[2]/div/div[4]/div[3]/div/div[1]/div[3]/table[1]/tr[3]/td[2]/span/text()"))

但我什么也没得到。

使用像这样的 xpath:

''.join(tree2.xpath("//html/body/div[1]/div[3]/article/div[2]/div/div[4]/div[3]/div/div[1]/div[3]/table[1]/tr[3]/td[2]//text()"))

我正在获取单词“kcal”,但无法获取值“75,00”

HTML 片段:

<td style="font-weight:bold;"><span id="kcl715">75,00</span> kcal</td>

有人可以帮忙吗?

最佳答案

表中的值是在浏览器中执行的 JavaScript 的帮助下生成的。

解决这个问题的一个选择是通过selenium自动化浏览器。 ,例如 headless PhantomJS:

>>> from selenium import webdriver
>>>
>>> driver = webdriver.PhantomJS()
>>> driver.get("http://www.tabele-kalorii.pl/kalorie,Actimel-cytryna-miod-Danone.html")
>>>
>>> table = driver.find_element_by_xpath(u"//table[tbody/tr/td/h3 = 'Wartości odżywcze']")
>>> for row in table.find_elements_by_css_selector("tr.tr-gorna-kreska"):
...     cells = [td.text for td in row.find_elements_by_tag_name("td")]
...     print cells
... 
[u'Warto\u015b\u0107 energetyczna', u'75,00 kcal', u'75,00 kcal']
[u'Bia\u0142ko', u'2,70 g', u'2,70 g']
[u'W\u0119glowodany', u'11,80 g', u'11,80 g']
[u'T\u0142uszcz', u'1,50 g', u'1,50 g']

关于python - 无法从 xpath python 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30983271/

相关文章:

java selenium xpath查找文本包含空格的元素

python - 将 PrimaryKeyRelatedField 替换为另一个字段

python - 你能同时检查机器人框架中的多个 URL 吗?

javascript - 以phonegap + Angular JS + onsen为中心

python - 是否可以让这个 Xpath 变得更短?

xml - 如何在带有后缀的XPath 1.0中使用text()?

python - 将 ISO 639-1 转换为 ISO 639-2

python - 神经网络中权重的更新

javascript - 在选择框中查找选定的值

javascript - 调用网络服务 AngularJS