大家好,我正在尝试使用selenium和scrapy从中获取一些信息https://answers.yahoo.com/dir/index/discover?sid=396545663
我尝试不同的方法,我使用硒和设置PhantomJs像驱动程序。对于向下滚动页面,它是一个无限滚动页面,我使用以下指令:
elem.send_keys(Keys.PAGE_DOWN)
要模拟按下Page Down按钮,而不是JavaScript函数,请执行以下操作:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
因为这一个“似乎”在页面中加载更少的元素。
主要的问题是我如何知道何时到达页面底部?是“无限滚动”页面,所以我不知道它何时结束,我需要向下滚动,但底部没有任何元素可供分析。
其实我用的是临时循环,但是看起来真的很蠢。
谢啦
例如,您可以创建一些并行线程来检查页面中的ajax请求。如果两个请求之间的时间间隔经常超过10秒,您将看到页面的末尾。我没有别的想法。
我真的会寻找“装载…”指示信号等待它在每个滚动条上都可见,但是如果您将得到一个TimeoutException
-这次没有加载指示器,也没有更多的项目要加载。
示例实现:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
while True:
# do the scrolling
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
try:
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[. = 'Loading...']")))
except TimeoutException:
break # not more posts were loaded - exit the loop
没有测试。
问题内容: 我试图滚动到页面的末尾,以便可以显示所有数据并将其提取。我试图为它找到一个命令,但是它在Java(driver.executeScript)中可用,但是找不到python。现在我正在使计算机按结束键数千次: 而且我也尝试过,但是它滚动到加载页面的末尾,并且END键也一样。一旦位于页面底部,将加载下一个内容。但是现在它不再滚动了。 我知道会有一个非常不错的选择。 如何在Python中使用
问题内容: 使用Python和Selenium时,我在滚动到网页顶部时遇到问题。 当页面由于某种原因加载时,您将被带到页面底部(这是固定的)。但是,当我尝试滚动到顶部时,它不起作用。 我尝试了以下方法: 和 我也尝试过找到该元素,然后滚动到它: 向下滚动到元素时,上面的scrollIntoView()代码适用。但是,它无法向上滚动。 我已经尝试过运行Chrome驱动程序和PhantomJs。 有什
问题内容: 我正在尝试抓取这一(无限)页面(www.mydealz.de),但是我无法让我的网络驱动程序向下滚动页面。我正在使用Python(3.5),Selenium(3.6)和PhantomJS。我已经尝试了几种方法,但是webdriver不会滚动- 它只给我第一页。 第一种方法(常用的滚动方法): 第二种方法(只需按下几次向下键并释放它,也尝试在两次按下之间等待): 第三种方法(在“滚动列表
问题内容: 我正在抓取此网页中的用户名,该用户名在滚动后会加载用户 转到页面的网址:“ http://www.quora.com/Kevin- Rose/followers ” 我知道页面上的用户数量(在这种情况下,编号为43812)如何滚动页面,直到所有用户加载完毕?我在互联网上搜索了相同的代码,到处都可以找到几乎相同的代码行: driver.execute_script(“ window.sc
我正在尝试滚动到一个页面的末尾,这样我就可以使所有的数据可见并提取出来。我试图为它找到一个命令,但它在java(driver.executescript)中可用,但在Python中找不到。现在我正在让电脑按下end键上千次: 我还尝试了,但它会滚动到加载页面的末尾,与end键所做的相同。一旦在页面底部,下一个内容加载。但现在它不再滚动了。 我知道会有一个很好的替代方案。 如何在Python中使用s
我正在抓取这个网页的用户名,在滚动后加载用户 指向页面的Url:“http://www.quora.com/Kevin-Rose/followers" 我知道页面上的用户数(本例中的用户数为43812),如何滚动页面直到加载所有用户?我在互联网上搜索过同样的代码,在任何地方我都能找到几乎相同的代码行: driver.execute_script("window.scroll至(0)") 如何确定垂