我正在用硒刮一个无限滚动的页面。
我正在尝试使用以下代码:
import time
import pandas as np
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
url = 'https://twitter.com/search?f=tweets&q=csubwaystats%20since%3A2018-05-28%20until%3A2018-08-28'
browser.get(url)
time.sleep(1)
SCROLL_PAUSE_TIME = 0.5
# Get scroll height
last_height = webdriver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
webdriver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = webdriver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
我从多个来源获得此代码,最近的一个来源是:
如何在python中使用SeleniumWebDriver滚动网页?
我将其更新为包含“webdriver”而不是“driver”,因为我将selenium作为webdriver导入。否则就不行了。
我的问题是,当我运行代码时,我得到:
AttributeError: module 'selenium.webdriver' has no attribute 'execute_script'
我真的不明白这意味着什么以及如何修复它?我找不到这方面的信息。
我是python新手,所以我可能遗漏了一些显而易见的东西,但任何建议都将不胜感激。
AttributeError: module 'selenium.webdriver' has no attribute 'execute_script'
您会得到这个错误,因为execute_script不是一个类属性,您不能直接使用它。因为它是一个实例属性,你应该创建一个类的实例。请点击这里了解更多关于课程的信息。
这将正常工作,因为execute_script作为实例属性运行。
last_height = browser.execute_script("return document.body.scrollHeight")
您的最终代码如下所示:
import time
import pandas as np
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
url = 'https://twitter.com/search?f=tweets&q=csubwaystats%20since%3A2018-05-28%20until%3A2018-08-28'
browser.get(url)
time.sleep(1)
SCROLL_PAUSE_TIME = 0.5
# Get scroll height
last_height = browser.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
webdriver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = webdriver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
要使其正常工作,您必须创建webdriver的实例,例如:
from selenium import webdriver
driver = webdriver.Chrome() # webdriver.Ie(), webdriver.Firefox()...
last_height = driver.execute_script("return document.body.scrollHeight")
你可以从这里下载Chromedriver
您还需要将Chromedriver的路径添加到环境变量path中,或者将下载的文件放入与Python可执行文件相同的文件夹中。。。
webdriver
是模块的名称,而不是您的实例。事实上,您已将创建的实例分配给名称browser
,其中有一行:browser=webdriver。Chrome()
因此,不要调用webdriver。执行_script()
(这将为您提供一个AttributeError
),您必须使用您的实例调用它,如下所示:浏览器。执行脚本()
。
我是硒网络驱动程序的新手,目前使用Python来编写脚本。现在我想应用参数,我使用Excel应用了数据驱动方法。基本上只有第一个循环ok,它可以读取和写入第一行的数据,但之后不能。 首先,我在Python文件中创建它(作为新模块): 接下来,我编写以下代码以在登录和注销过程中包含数据驱动测试: 我得到了错误属性错误:“NoneType”对象没有属性“send_keys”,所以我认为包括等待/睡眠可
问题内容: 我试图在Heroku的我的GeoDjango应用程序上运行,但出现以下错误: AttributeError:“ DatabaseOperations”对象没有属性“ geo_db_type” 我所有的 研究都得出了相同的解决方案:确保用作数据库引擎。有趣的是,我已经这样做了(我也有在): 还有其他我想念的东西吗?非常感谢您的帮助,以下是完整的错误跟踪供参考: 问题答案: 该OP是使用G
我想知道我是否可以执行一个基于SQS消息的脚本。 我的要求是,当我在SQS中收到队列消息时,在EC2中执行脚本。 谢谢和问候,Srivignesh KN
当我执行代码时,我得到一个错误, 属性错误:“WebDriver”对象没有属性“find_element_by_xpath”
当我使用: 我得到这个错误: 完整代码: 梯度提升分类器模型为:
试图通过解析JSON提取response属性时,收到NoSuchProperty错误