【问题标题】:Infinite Scroll on Quora using Selenium in Python and Javascript在 Python 和 Javascript 中使用 Selenium 在 Quora 上进行无限滚动
【发布时间】:2015-12-29 14:09:00
【问题描述】:

我尝试处理 Quora 网站中的“无限滚动”。 在尝试使用 send_keys 方法后,我将 selenium lib 与 Python 一起使用,我尝试运行 Javascript 命令以向下滚动页面。

当我运行代码时它不起作用,但如果我尝试在 firefox 控制台中运行它就可以了。 我该如何解决这个问题?并且可以使用 PhantomJs 吗?

def scrapying(self):
    print platform.system()

        browser = webdriver.Firefox()
        #browser = webdriver.PhantomJS(executable_path='/usr/local/bin/node_modules/phantomjs/lib/phantom/bin/phantomjs')

    browser.get("https://www.quora.com/C-programming-language")
    #browser.get("https://answers.yahoo.com/dir/index?sid=396545660")
    time.sleep(10)

    #elem = browser.find_element_by_class_name("topic_page content contents main_content fixed_header ContentWrapper")
    no_of_pagedowns = 500

    while no_of_pagedowns:
        #elem.send_keys(Keys.SPACE)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(0.5)
        no_of_pagedowns -= 1

    browser.quit()






myClassObject = getFrom()
myClassObject.scrapying()

【问题讨论】:

标签: javascript python selenium infinite-scroll quora


【解决方案1】:

其中一个选项是递归地scroll into view页面上最后加载的帖子

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.quora.com/C-programming-language")

NUM_POSTS = 200
posts = driver.find_elements_by_css_selector("div.pagedlist_item")

while len(posts) < NUM_POSTS:
    driver.execute_script("arguments[0].scrollIntoView();", posts[-1])

    posts = driver.find_elements_by_css_selector("div.pagedlist_item")

    print(len(posts))

它会向下滚动页面,直到至少 NUM_POSTS 帖子被加载。

【讨论】:

  • 我尝试运行此代码,但在 Firefox 或终端字符串中没有收到任何反馈。您使用 Chrome 之类的驱动程序?但是firefox js函数呢?
  • @RedVelvet 好的,你能在 Chrome 中试试吗?
  • 是的,你明白了!它适用于 chrome,但为什么不能在 Firefox 上以及如何在 phantomJs 上尝试相同的东西对我的项目更重要。我也尝试使用 time.sleep(3)
【解决方案2】:

在使用 Firefox 时,我也无法触发 无限滚动 来使用它。但是,代码的要点在控制台中有效:

for i in range(0, 5):
    self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)

【讨论】:

    猜你喜欢
    • 2019-07-05
    • 2014-10-23
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多