2017-07-28 11 views
0

私はこのページを掻き集めなければなりません。http://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=feature xpathを使っているうちに映画の名前「The Lost City of 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 

すべてのムービーをこすりするために、私は、XPathから[1]

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 

を削除しかし、出力は( 'ロストシティのみ最初のムービーの名前です。 Z 'の)

これは' R 'で動作しましたが、Python(セレンのwebdriver)で動作しません。誰かが私にどこが間違っているか教えてもらえますか?

答えて

0

は、あなたの質問への答えです:

代わりfind_element_by_xpathのURLがhttp://www.imdb.com/search/title?count=100&release_date=2016,2016&title_type=featureでページからすべてのムービーをこすりするために、我々はリストを返しますdriver.find_elements_by_xpathを使用することになります。次に、リストを繰り返してテキストを取得し、それを1つずつ印刷します。参考のためのコードブロックは次のとおりです。

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

Thanx a lot !! :)これは私が望んだものでした。あなたはこの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 helped !! :)ありがとうございます。 –

関連する問題