【发布时间】:2018-07-23 12:11:14
【问题描述】:
真的需要这个社区的帮助!
当我尝试从旅游网站上抓取动态内容时,只有单击网站上的“查看价格”按钮才能获取价格和相关供应商信息。因此,我正在考虑在使用 Selenium 进行抓取之前使用“for 循环”单击所有“查看价格”按钮。
问题是每个按钮都可以点击browser.find_element_by_xpath().click(),但是当我创建一个包含所有按钮信息的列表时,会弹出一个错误:
代码块:
browser=webdriver.Chrome("C:/Users/Owner/Downloads/chromedriver_win32/chromedriver.exe")
url="https://www.cruisecritic.com/cruiseto/cruiseitineraries.cfm?port=122"
browser.get(url)
#print(browser.find_element_by_css_selector(".has-price.meta-link.show-column").text)
ButtonList=[ "//div[@id='find-a-cruise-full-results-container']/div/article/ul/li[3]/span[2]",
"//div[@id='find-a-cruise-full-results-container']/div/article[2]/ul/li[3]/span[2]",
"//div[@id='find-a-cruise-full-results-container']/div/article[3]/ul/li[3]/span[2]"]
for button in ButtonList:
browser.implicitly_wait(20)
browser.find_element_by_xpath(str(button)).click()
错误堆栈跟踪:
WebDriverException: unknown error: Element <span class="label hidden-xs-down" data-title="...">View All Prices</span> is not clickable at point (862, 12). Other element would receive the click: <a href="https://boards.cruisecritic.com" onclick="s_objectID='Primary Nav : Boards';">...</a>
(Session info: chrome=63.0.3239.132)
(Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.16299 x86_64)
我的问题是如何在抓取之前点击网页上的所有按钮,或者如果我们必须点击某个按钮来“解析”数据,是否还有其他方法可以抓取网页上的动态内容进入 Python。附图为网页截图。
非常感谢社区的帮助!
【问题讨论】:
标签: python selenium dynamic web-scraping