2016-01-10 75 views
1

我有這個網站http://www.google-proxy.net/,我需要獲得第一個代理的ip:port。Python - 相同的xpath在硒和lxml中的不同結果

br = webdriver.Firefox() 
br.get("http://www.google-proxy.net/") 
ip = br.find_element_by_xpath("//tr[@class='odd']/td[1]").text; time.sleep(random.uniform(1, 1)) 
port = br.find_element_by_xpath("//tr[@class='odd']/td[2]").text; time.sleep(random.uniform(1, 1)) 

它工作正常。但現在我想要做的lxml

page = requests.get(proxy_server) 
root = lxml.html.fromstring(page.text) 
ip = root.xpath("//tr[@class='odd']/td[1]/text()") 
port = root.xpath("//tr[@class='odd']/td[1]/text()") 

我得到空列表。這是爲什麼?

回答

2

看起來'奇怪'類是由Javascript在本網站添加。

Selenium在運行瀏覽器時執行Javascript,所以您有預期的類。

請求庫不會執行JS,所以沒有'奇怪'類。

1

當您使用Selenium打開http://www.google-proxy.net,已啓用JavaScript。在這種情況下,JavaScript將類oddeven添加到tr元素。

requests.get方法加載HTML從http://www.google-proxy.net未啓用JavaScript。因此,類oddeven未添加到tr元素,並且您的XPath/lxml功能不會選擇任何內容。要複製此行爲,您可以使用JavaScript切換器插件,例如Chrome plugin。這使您可以在不啓用JavaScript的情況下輕鬆加載網頁。

相關問題