【问题标题】:Slowly scroll in python selenium javascript在python selenium javascript中慢慢滚动
【发布时间】:2018-05-04 17:57:32
【问题描述】:
url = correct_url(url)
browser = webdriver.Chrome()
browser.get(url)
browser.find_element_by_xpath('//*[@title="New chat"]').click()
drawer_body = browser.find_elements_by_class_name('drawer-body')
browser.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', drawer_body)

获取'div'元素,它有一个列表并且会被滚动

drawer_body = browser.find_elements_by_class_name('drawer-body')

下面的行滚动非常快并到达底部,但这不会加载数据。有什么办法可以让我慢慢滚动到drawer_body元素?

browser.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight',drawer_body)

我正在尝试使用 python 和 selenium 实现以下脚本。 http://ctrlq.org/code/19966-whatsapp-phone-numbers

【问题讨论】:

  • 当您滚动到drawer_body 元素时,它会向服务器发出请求,您可以获取该请求。打开网络选项卡并尝试手动请求链接,看看会发生什么,如果你提供 url 我可以看看它
  • 我没明白你的意思,我对这些东西不熟悉。我想在 web.whatsapp.com 中滚动

标签: javascript python selenium web-scraping


【解决方案1】:

大多数浏览器都支持 空格键 键作为向下滚动页面的键盘快捷键。使用此功能,您可以执行以下操作:

  1. 访问页面
  2. 解析目前已加载的内容
  3. 使用 Selenium 模拟按空格键
  4. 等待 2-3 秒,直到加载更多数据
  5. 继续

还有一个提示:为避免陷入永远循环,您需要检查新加载的数据是否与按空格键之前的数据不同,否则脚本应该退出,因为没有新数据要解析。

【讨论】:

    【解决方案2】:

    试试这个

    drawer_body = browser.find_elements_by_class_name('drawer-body')
    location = drawer-body.location
    for i in range(location['x']//500):
        browser.execute_script('window.scrollBy(0, 500)')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多