首页 > 解决方案 > 像从我的浏览器一样导航网页(Python、selenium)

问题描述

我需要解析一个页面,保持 HTML 和 JS 与我自己的浏览器中的相同。站点必须认为,我使用同一个浏览器登录,我需要使用 JS “按下”一些按钮并找到一些元素。

使用requestslibrary 或selenium.webdriver.Firefox()时,站点认为我来自新浏览器。但我认为selenium必须有所帮助。

标签: pythonseleniumparsingwebbrowser

解决方案


请求不能处理 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,这听起来就像您正在寻找的那样。


推荐阅读