2017-04-14 65 views
0

我想从Tripadvisor.com上的搜索结果中选择一个使用其元素的网址,但是我的所有努力都没有成功。 这里是我的代码:如何使用Selenium Webdriver从搜索结果中获取元素的文本

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部分:

<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> 

我想获得的数据网址部分脚本,以便我可以将它连接到我的基础URL并跳转到页面。此外,如果有方法可以直接点击搜索结果链接,则会更容易。但我无法找到搜索结果的元素。

回答

1

更正到您的代码。

  • 相反的className使用CSS选择器(如果它 是具有空间的名称中我们不能使用类名)

  • 对于webelement得到属性值,我们将使用webelement.get_attribute方法,但不
    getAttribute。

用下面的代码替换你的最后两行代码。

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

它比购买网址更容易! –

+0

如果您发现这个(或任何)答案有帮助,请立即投票。如果这回答了您的问题,请将其标记为已接受的答案。谢谢! – JeffC

相关问题