Selify错误消息“selenium.webdrive没有属性执行脚本”

gcmastyq  于 2022-11-10  发布在  其他
关注(0)|答案(4)|浏览(161)

我正在使用 selenium 来刮取一个无限滚动的页面。
我正在尝试使用以下代码:

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”,因为我将Selify作为WebDriver导入。否则就行不通了。
我的问题是,当我运行代码时,我得到:

AttributeError: module 'selenium.webdriver' has no attribute 'execute_script'

我真的不明白这意味着什么,以及如何修复它?我还没有找到关于这件事的信息。
我是新手,所以我可能遗漏了一些显而易见的东西,但任何建议都将不胜感激。

8ftvxx2r

8ftvxx2r1#

webdriver是模块的名称,而不是您的示例。实际上,您已经将创建的示例分配给了名称browser,代码为:browser = webdriver.Chrome()
因此,您必须使用您的示例调用它,而不是调用webdriver.execute_script()(这将为您提供AttributeError),如下所示:browser.execute_script()

wj8zmpe1

wj8zmpe12#

要使其正常工作,您必须创建一个WebDriver示例,例如:

from selenium import webdriver

driver = webdriver.Chrome() # webdriver.Ie(), webdriver.Firefox()...
last_height = driver.execute_script("return document.body.scrollHeight")

您可以从here下载ChromeDriver
您还需要add path to Chromedriver to your environment variable PATH或只是将下载的文件放入与您的Python可执行文件相同的文件夹中……

oo7oh9g9

oo7oh9g93#

AttributeError: module 'selenium.webdriver' has no attribute 'execute_script'

您收到此错误是因为‘EXECUTE_SCRIPT’不是类属性,您只是不能直接使用它。因为它是一个示例属性,所以您应该创建类的一个示例。请查看here了解有关的更多信息。
现在可以很好地工作了,因为‘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
nzk0hqpo

nzk0hqpo4#

对于其他人,请检查您的函数名称。我写的是Java函数名,而不是Python函数名

driver.execute_script("script") # Python
driver.ExecuteScript("script"); # Java

之所以在这里发布这篇文章,是因为它是谷歌对该错误的最高搜索结果

相关问题