【问题标题】:Webscraping Dynamic Webpage w/ load buttonWeb Scraping Dynamic Web Page on/load 按钮
【发布时间】:2021-07-06 06:58:14
【问题描述】:

我正在尝试抓取美国新闻 (https://www.usnews.com/best-colleges/rankings/national-universities?_mode=table')。有一个“加载更多”按钮可以动态加载表格。有388所学校,每次加载10所。考虑到页面初始加载时显示的原始 10 个,我应该点击加载更多按钮 37 次。

webapge 的工作方式是,当用户滚动以显示“加载更多”按钮时,下一组的加载会自动触发(但有时它不会触发,您必须物理单击该按钮.

所以,我设置了一个 selenium webdriver,并且我有一个 scrollMore() 函数,它 1) 在 HTML 中找到按钮,将按钮滚动到视图中,然后单击它。我也在清除它们之间的 cookie,否则我会被他们的服务器阻止。我最初使用 selenium 函数单独执行此操作,但我认为一定有一些竞争条件,因为在一些迭代后尝试找到按钮时我会超时。

所以,我正在尝试同步进行,这就是我目前拥有的:

self.driver.execute_script("var button = document.evaluate(\"//button[normalize-space()='Load More']\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;"\
                           "button.scrollIntoView();"\
                           "button.disabled = false; button.click();")

问题是它只适用于 19 次加载,但无论我尝试什么,我都无法获得第 20 次加载。什么是可能的建议。

【问题讨论】:

    标签: javascript selenium button web-scraping scroll


    【解决方案1】:

    尝试禁用 selenium 驱动程序的浏览器通知,似乎在某些时候启动了一些通知并阻止与页面元素的进一步交互。

    【讨论】:

    • 这似乎不起作用。这些是我通过 chromedriver options = ['user-agent='+userAgent,'--headless','--disable-notifications','disable-popup-blocking', '--no-sandbox' ,'禁用-开发-shm-使用']
    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2015-08-25
    • 2018-09-03
    • 2019-10-04
    • 2021-10-22
    • 2011-07-11
    • 2018-08-24
    • 1970-01-01
    相关资源
    最近更新 更多