【发布时间】:2017-08-25 23:22:22
【问题描述】:
我正在尝试通过单击日历来获取 https://www.homeaway.pt/arrendamento-ferias/p418841 中每一天的可用性/价格,检查哪些天已被占用,单击 next 按钮以便它可以跳到下个月。
我还想点击到达日期,然后选择一个结帐日期,这样我就可以看到它的价格。
我遇到了问题,因为我尝试了在 chrome 中工作的命令,但它们似乎在 selenium 中不起作用。
例如:
我愿意:
self.driver.get(url)
wait = WebDriverWait(self.driver, 10)
try:
elem = wait.until(
EC.visibility_of_element_located(
(
By.CSS_SELECTOR,
"#startDateInput"
)
)
)
except TimeoutException:
pass
else:
elem.send_keys(Keys.NULL)
这似乎打开了日历,我还可以列出可选择的日期:
for x in self.driver.find_elements_by_css_selector(".stab-calendar-day.stab-calendar-day-active.stab-calendar-day-selectable.pull-left"): print(x.get_attribute('data-formatted-date'))
但是当我想跳到下一个活动月份时,它一直显示相同的初始月份,那是因为这不起作用:
self.driver.find_element_by_css_selector('.stab-calendar-controls-next').click()
selenium.common.exceptions.NoSuchElementException: 消息:无法定位元素:{"method":"css selector","selector":".stab-calendar-controls-next"}
关于如何获得每组选定日期的房屋可用性/价格的任何想法?
【问题讨论】:
-
我没有 python,但我用 Java 编写了一些代码,但我并没有真正发现任何问题。我正在使用不同的 CSS 选择器来获取可用日期,
"div.stab-calendar-day-selectable:not(.stab-calendar-day-disabled)"。您将需要它来区分那些在月末和月初作为占位符但不可点击的日期,否则您会发现您会发现重复日期。当我找到并单击带有"a.stab-calendar-controls-next"的下一个按钮时,它对我来说很好。可能是时间问题,您是否尝试过等待再单击下一步? -
您能否发布您的 Java 代码,以便我看看并尝试一下?我确实尝试过没有运气的等待
-
只要日历弹出窗口仍在显示,您的代码就可以在 Chrome 和 python 上正常工作。我剪切并粘贴没有错误。检查硒的版本?您可以尝试使用其他驱动程序(Firefox 等)吗?
标签: python selenium datepicker web-scraping