我正在尝试使用其元素从Tripadvisor.com上的搜索结果中选择一个URL,但我所有的努力都没有成功。 这是我的代码:
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>
我正在尝试获取脚本的 data-url 部分,以便我可以将其连接到我的基本URL并跳转到该页面。此外,如果有一种方法可以直接点击搜索结果链接,那将更容易。但我无法找到搜索结果的元素。
答案 0 :(得分:1)
对您的代码进行更正。
而不是className使用css选择器(如果它,我们不能使用classname 名称中有空格)
对于获取属性值的webelement,我们将使用webelement.get_attribute方法但不是 的getAttribute。
用以下代码替换最后两行代码。
url = driver.find_element_by_css_selector(".dp_cr.loc1759051")
page_url = url.get_attribute("data-url")
让我知道它是否适合你。
答案 1 :(得分:1)
导航到搜索结果页面的最简单方法是单击每个结果。您可以使用下面的CSS选择器
来完成此操作Item
这将返回搜索结果的集合,然后您可以单击任何所需的结果页面。