2017-07-28 58 views
0

我必須刮這頁,http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature。 雖然使用xpath我可以刮電影名稱,'失落的城市Z'。下面是代碼:從具有類似xpath的網頁(可以在列表中提取的內容)中提取所有內容

driver_t.get('http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature') 
    x= driver_t.find_element_by_xpath('//*[@id="main"]/div/div/div[3]/div[1]/div[3]/h3/a') 
    print x.text 

爲了湊所有的電影,我刪除了[1]中的XPath

driver_t.get('http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature') 
    x= driver_t.find_element_by_xpath('//*[@id="main"]/div/div/div[3]/div/div[3]/h3/a') 
    print x.text 

但是,輸出是唯一的第一部電影的名字(「迷失之城'')

這工作在'R',但它不工作在python(硒webdriver)。有人能告訴我我哪裏錯了嗎?

回答

0

這裏是回答你的問題:

爲了湊所有網頁中的電影與URL http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature代替find_element_by_xpath我們將使用driver.find_elements_by_xpath這將返回一個列表。接下來,我們將遍歷列表並檢索文本並逐個打印它們。以下是供您參考的代碼區:

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 

options = Options() 
options.add_argument("start-maximized") 
options.add_argument("disable-infobars") 
options.add_argument("--disable-extensions") 
driver = webdriver.Chrome(chrome_options=options, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe") 
driver.get("http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature") 
titles = driver.find_elements_by_xpath("//h3[@class='lister-item-header']/a") 
for title in titles: 
    movie_name = title.get_attribute("innerHTML") 
    print(movie_name) 

讓我知道這個答案是否是您的問題。

+0

非常感謝! :)這就是我想要的。你能告訴我你是如何得到這個xpath的嗎?「// h3 [@ class ='lister-item-header']/a」?而且,選項功能的意義何在。 –

+0

好的,簡單地說,xpath,「// h3 [@ class ='lister-item-header']/a」標識我們感興趣的元素的常見xpath。選項類可以幫助您「啓動最大化」,「禁用信息欄」和「如果任何擴展程序嘗試默認加載時禁用」。謝謝 – DebanjanB

+0

你能建議我一個鏈接,我可以詳細研究這個嗎?當我嘗試用於其他網站時,尋找常見的xpath變得有點棘手。 –

0

你想要find_elements_by_xpath(複數元素)。

您也可以簡化的XPath公式:

titles = driver.find_elements_by_xpath('.//h3[@class="lister-item-header"]//a') 

然後第一個和最後一個冠軍成爲可用:

>>> titles[0].text 
'The Lost City of Z' 
>>> titles[99].text 
'Raw' 

不過,我注意到最後一部電影的全稱是'原始II'。你可能認爲有必要使用類似的東西,然後放棄年份。

>>> titles[99].find_element_by_xpath('../span[2]').text 
'(II) (2016)' 
+0

find_elements_by_xpath help !! :)謝謝。 –