python - 像从我的浏览器一样导航网页(Python、selenium)
问题描述
我需要解析一个页面,保持 HTML 和 JS 与我自己的浏览器中的相同。站点必须认为,我使用同一个浏览器登录,我需要使用 JS “按下”一些按钮并找到一些元素。
使用requests
library 或selenium.webdriver.Firefox()
时,站点认为我来自新浏览器。但我认为selenium
必须有所帮助。
解决方案
请求不能处理 JavaScript,也不能解析 HTML 和 CSS 来创建 DOM。Requests 只是围绕向任何服务器发出 HTTP 请求的一个非常好的抽象,但网站/浏览器并不是唯一使用 HTTP 的东西。
您正在寻找的是一个 JavaScript 引擎以及一个 HTML 和 CSS 解析器,以便它可以为该站点创建一个实际的 DOM 并允许您与之交互。如果没有这些东西,就无法判断页面的 DOM 是什么,因此您将无法单击其上的按钮并让生成的 JavaScript 执行应有的操作。
所以你正在寻找的是一个网络浏览器。只是没有办法解决它。根据定义,任何做这些事情的东西都是网络浏览器。
从您的评论中澄清一下,仅仅因为某些东西有 GUI,这并不意味着它不是自动的。事实上,这正是 Selenium 的用途(即自动化与作为网页的 GUI 的交互)。它并不是要精确地 1:1 模拟用户行为,它实际上是围绕 WebDriver 协议的抽象,用于编写自动化测试。但是,它确实允许您以一种近似于用户与之交互的方式与网页交互。
您可能不想看到浏览器的 GUI,但幸运的是,Chrome 和 Firefox 具有“无头”模式,而 Selenium 可以控制这些浏览器的无头实例。这将在 Selenium 控制它时隐藏浏览器 GUI,这听起来就像您正在寻找的那样。
推荐阅读
- sql - SQL Server 中的多对多比较
- mysql - 如何从当前时间减去 600 秒?
- microsoft-graph-api - 复制 DriveItem 但覆盖
- jogl - 如何创建 VAO 和 VBO 以与 JOGL 一起使用?
- javascript - 分隔文本的每一行并处理其信息
- azure-language-understanding - 如何以编程方式将预测资源添加到 LUIS 应用
- telegram - 从移动网站中的链接打开电报应用程序
- c# - C# - 如何向 Google Developer API 发出请求
- node.js - 错误:此分支没有默认环境问题?
- flutter - 按下按钮时启动动画 - Flutter