2017-04-14 5 views
0

Tripadvisor.comの検索結果からその要素を使用してURLを選択しようとしていますが、すべての努力がうまくいっていません。私はのデータ-URL部分を取得しようとしていますSelenium Webdriverを使用して検索結果から要素のテキストを取得する方法

<div class="dp_cr loc1759051" data-url="/Hotel_Review-g304551-d1759051-Reviews-The_Leela_Palace_New_Delhi-New_Delhi_National_Capital_Territory_of_Delhi.html?t=304551"> 
<div class="date_picker_wrap"> 
<div class="prw_rup prw_datepickers_desktop_horizontal_styleguide_icon" data-prwidget-name="datepickers_desktop_horizontal_styleguide_icon" data-prwidget-init="handlers"> 
<span class="unified-picker" data-datetype="CHECKIN" data-emptytext="Check In" data-trackingcontext="CheckIn|DATES" data-didcreatedefaultdates="false" data-dateformat="dd/MM/yyyy" onclick="(ta.prwidgets.getjs(this,'handlers')).onDatePickerClick(this, false);"> 
<span class="picker-inner"> 
<span class="ui_icon calendar"></span> 
<span class="picker-label"> Check In </span></span></span> 
<span class="unified-picker" data-datetype="CHECKOUT" data-emptytext="Check Out" data-trackingcontext="CheckOut|DATES" data-dateformat="dd/MM/yyyy" onclick="(ta.prwidgets.getjs(this,'handlers')).onDatePickerClick(this, false);"><span class="picker-inner"><span class="ui_icon calendar"></span> <span class="picker-label"> Check Out </span></span></span></div></div><div class="crOverlayButton"><span class="ui_button original large w100p" onclick="ta.page.gatherDatesNear(this);">Show Prices </span></div></div> 

:ここ

from selenium.webdriver.common.keys import Keys 
from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
import time 
driver = webdriver.Chrome() 
base_url = 'https://www.tripadvisor.in/' 
driver.get(base_url) 

hotel = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'mainSearch'))) 
#hotel = driver.find_element_by_id("mainSearch") 
hotel.send_keys('the leela palace') 
time.sleep(0.5) 

loc = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'GEO_SCOPED_SEARCH_INPUT'))) 
#loc = driver.find_element_by_id("GEO_SCOPED_SEARCH_INPUT") 
loc.send_keys('New Delhi, India') 
time.sleep(0.5) 

search = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'SEARCH_BUTTON'))) 
search.submit() 
time.sleep(1) 

url = driver.find_element_by_class_name("dp_cr.loc1759051") 
page_url = url.getAttribute("data-url") 

がそこから情報を取得しようとしていますウェブサイトのhtmlの部分である: はここに私のコードですそのスクリプトを私のベースURLに連結してページにジャンプできるようにします。また、検索結果のリンクを直接クリックできる方法があれば、もっと簡単になります。しかし、検索結果の要素を見つけることができません。

答えて

1

コードの訂正。

  • 代わりに属性値を取得するwebelementのクラス名を使用するCSSセレクタ(それ は、その名前にスペースをしている場合、我々はクラス名を使用することはできません)

  • の、我々はwebelement.get_attributeメソッドを使用しませんが
    getAttribute。

最後の2行のコードを次のコードに置き換えます。

url = driver.find_element_by_css_selector(".dp_cr.loc1759051") 
page_url = url.get_attribute("data-url") 

あなたに適しているかどうか教えてください。

+0

これは完全に機能します。 –

1

検索結果ページに移動する最も簡単な方法は、各結果をクリックすることです。あなたは、検索結果のコレクションを返します

driver.find_elements_by_css_selector("div.result_wrap") 

この下にCSSセレクタを使用してこれを行うことができ、その後、あなたが好きなものをクリックすることができますし、それが結果ページが表示されます。

+0

私はトップリンクだけをクリックしなければならなかったので、driver.find_element_by_css_selector( "div.result_wrap").Click()を使っていました。 –

+0

そして確かにURLを拾うより簡単! –

+0

この(または任意の)回答が役に立ちましたら、アップしてください。これがあなたの質問に答えた場合は、それを受け入れられた回答としてマークしてください。ありがとう! – JeffC

関連する問題