2015-06-22 63 views
1

我想從網頁中獲取值:http://www.tabele-kalorii.pl/kalorie,Actimel-cytryna-miod-Danone.html 我可以從第一部分中的所有值,但我無法從表「Wartościodżywcze」無法從XPath的蟒蛇獲得價值

我用這個獲取值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()")) 

我得到詞 '大卡',但不能獲得價值'75,00'

HTML片段:

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

任何人都可以幫忙

+0

這應該工作:' ''。加入(tree2.xpath(「// HTML /體/格[1]/DIV [3] /條/ DIV [2]/DIV/DIV [4]/DIV [3]/DIV/DIV [1]/DIV [3] /表[1]/TR [3]/TD [2] /跨度//文本()「))' – Manu

回答

1

表中的值是在瀏覽器中執行的javascript的幫助下生成的。

接近它的一個選擇是通過selenium例如自動化瀏覽器。無頭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']