在 Python 和 Javascript 中使用 Selenium 在 Quora 上无限滚动
Infinite Scroll on Quora using Selenium in Python and Javascript
我尝试处理 Quora 网站中的 "infinite scrolling"。
在尝试使用 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()
其中一个选项是递归 scroll into view 页面上最后加载的 post:
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
post 被加载。
我在使用 Firefox 时也无法触发无限滚动。代码的要点在控制台中有效,但是:
for i in range(0, 5):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
我尝试处理 Quora 网站中的 "infinite scrolling"。 在尝试使用 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()
其中一个选项是递归 scroll into view 页面上最后加载的 post:
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
post 被加载。
我在使用 Firefox 时也无法触发无限滚动。代码的要点在控制台中有效,但是:
for i in range(0, 5):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)