使用python selenium的execute_script()的ScrollHeight size返回一个未更改的resu

2024-09-30 01:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

enter image description here

结果:

enter image description here

图像内容是我当前的代码。我的目标是在youtube频道上获取所有视频数据。但目前我只有30个初始视频数据。在执行一次逻辑之后,它就完成了。换句话说,newHeight的大小等于lastHeght的大小。当然,execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")代码只正确执行一次。为什么会出现这种结果?你知道吗

class Channel:
    def __init__(self):
        self.channelId = ''
        self.Home = ''
        self.Home_title = ''
        self.videoTab = ''
        self.chromedriver = '../chromedriver.exe'
        self.chromeBrowser = webdriver.Chrome(self.chromedriver)

    def __del__(self):
        self.chromeBrowser.quit()

def getVideoData(self):
    self.chromeBrowser.get(self.videoTab)
    lastHeight = self.chromeBrowser.execute_script("return document.documentElement.scrollHeight")
    print('lastHeight : ' + str(lastHeight))
    while True:
        self.chromeBrowser.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
        self.chromeBrowser.implicitly_wait(0.5)
        newHeight = self.chromeBrowser.execute_script("return document.documentElement.scrollHeight")
        print('newHeight : ' + str(newHeight))
        if newHeight == lastHeight:
            break
        lastHeight = newHeight
    page = self.chromeBrowser.page_source
    html = BeautifulSoup(page, 'html.parser')
    for href in html.select('#thumbnail'):
        href.get('href')
    for video_title in html.select('#video-title'):
        print(video_title.text)
    print(len(html.select('#video-title')))

Tags: 代码selfexecutetitledefhtmlvideoscript

热门问题