python - 来自 Selenium 的不完整 html
问题描述
嗨,我想知道为什么如果我有某个页面的 url 并像这样使用 selenium:
webdriver.get(url)
webdriver.page_source
selenium 提供的源代码缺少从浏览器检查页面时存在的元素?
这是网站保护自己免受抓取的某种方式吗?
解决方案
页面源代码可能包含一个关于 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>
推荐阅读
- sql - Oracle SQL 数据按月迁移行到列
- visual-studio-code - Visual Studio Code - 对文件夹中的所有文件应用快速修复
- android - Android 如何获得右键单击(在 chromebook 的触摸板上点击 2 个手指)?
- html - 响应按钮角
- php - PHP图像水印不支持高棉字体Unicode
- javascript - 是否可以在我的反应网站上加载另一个网站页面?
- android - 如何将 Android.Graphics.Bitmap 转换为 System.Drawing.Bitmap 并返回?
- solr - java.lang.NullPointerException\n\tat org.apache.solr.schema.TrieField.readableToIndexed(TrieField.java:433)
- vue.js - Vue.elementDirective 不是函数
- r - 在 R 中,如何在绘图的两个内部函数之间传递数据帧/小标题,然后保存绘图?