python-3.x - 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
解决方案
推荐阅读
- android - 如何在片段中初始化“lateinit 绑定”?
- android - Android Camera Exif 没有方向数据但图像已旋转
- react-native - 在 react native 中使用 fontFamily 时 fontWeight 不起作用
- typescript - Promise 的 TypeScript 子类不能用作 ES6+ 的异步函数返回值
- java - 异步 REST 调用服务器端
- amazon-web-services - AWS 导入图像 vhd,vmdk
- javascript - node-imap 打开子邮箱
- angular - HasGroup = true 出现在 jwt 令牌声明中,但角色值未出现
- javascript - 填充数组数组
- javascript - 使一个 div 在另一个 div 的全屏上可见