gpt4 book ai didi

python - 单击一页上的多个按钮时,Selenium Web Scraping 返回错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:48 25 4
gpt4 key购买 nike

真的需要这个社区的帮助!

当我试图从旅游网站抓取动态内容时,只有在网站上单击“查看价格”按钮才能获取价格和相关供应商信息。因此,我正在考虑在使用 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。附图为网页截图。

非常感谢社区的帮助!

enter image description here

最佳答案

您可能需要为您正在使用的 Xpath 选择相对路径。在您执行数据时,可能会出现显示的数据仅部分存在的情况。

尝试的方法:

  1. 增加等待时间
  2. 改变xpath/使用相对xpath
  3. Splinter - 您可以将其用作浏览器调用的常规方式

您需要在调用时检查数据是否存在于 DOM 元素中。如果是这种情况,等到加载完整页面将帮助您解决问题。

关于python - 单击一页上的多个按钮时,Selenium Web Scraping 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com