首页 > 解决方案 > 来自 Selenium 的不完整 html

问题描述

嗨,我想知道为什么如果我有某个页面的 url 并像这样使用 selenium:

webdriver.get(url)
webdriver.page_source

selenium 提供的源代码缺少从浏览器检查页面时存在的元素?

这是网站保护自己免受抓取的某种方式吗?

标签: pythonhtmlseleniumscreen-scraping

解决方案


页面源代码可能包含一个关于 javascript 文件的链接,您会在页面上看到许多控件,这些控件是通过运行 js 代码在您的浏览器中生成的。

源页面是:

<script>
[1,2,3,4,5].map(i => document.write(`<p id="${i}">${i}</p>`))
</script>

虚拟 DOM 是:

<p id="1">1</p>
<p id="2">2</p>
<p id="3">3</p>
<p id="4">4</p>
<p id="5">5</p>

获取虚拟 DOM HTML:

document.querySelector('html').innerHTML

<script>
[1,2,3,4,5].map(i => document.write(`<p id="${i}">${i}</p>`))
console.log(document.querySelector('body').innerHTML)
</script>


推荐阅读