首页 > 解决方案 > python selenium scrape 渲染 javascript

问题描述

我一直在阅读所有这些 SO 帖子并通读 Selenium 文档,我尝试了“expected_conditions”,但没有任何效果......

这是我正在尝试做的事情 - 我正在构建一个刮板,并决定针对亚马逊产品详细信息页面对其进行测试 - 在该页面上有一个带有 ID 的 div 标签:books-entity-teaser 由 JS 代码呈现该标签在页面上可见...

但是,当我执行代码时,该标签完全为空

有人可以指出我所缺少的吗

我尝试等待标签加载然后获取页面源

WebDriverWait(self.browser, 10).until(expected_conditions.invisibility_of_element((By.ID, 'books-entity-teaser')))

这是我的python代码

def scrape(self, url: str = 'https://www.amazon.com/dp/1408865270'):
        self.browser.get(url)

        page_state = self.browser.execute_script('return document.readyState;')

        scroll_pause_time = 0.5

        # Get scroll height
        last_height = self.browser.execute_script('return document.body.scrollHeight')

        while True:
            # Scroll down to bottom
            self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;')

            # Wait to load page
            time.sleep(scroll_pause_time)

            # Calculate new scroll height and compare with last scroll height
            new_height = self.browser.execute_script('return document.body.scrollHeight')
            if new_height == last_height:
                break
            last_height = new_height

        page_source = self.browser.execute_script('return document.body.innerHTML')
        WebDriverWait(self.browser, 10).until(expected_conditions.presence_of_element_located((By.ID, 'books-entity-teaser')))

        return page_source

预期成绩: 填充的 div 标签

实际结果: 空的 div 标签

标签: python-3.xselenium

解决方案


推荐阅读