哪里可以找到Chromium源代码中的整个HTML内容

Sex*_*ast 9 google-chrome chromium webviewchromium

我目前正在尝试这样做:一旦网页加载,找出URL是否具有某种模式(比方说www.wikipedia.com/*),然后,如果是这样,解析该网页的HTML内容就像一个人可以做的BeautifulSoup,并检查网页是否有一个divfoo和id boo.我知道在哪里可以编写这段代码,也就是说,我在哪里可以访问URL,我需要在哪里听取知道网页已经完成加载,然后我可以查找URL和HTML内容,以及在哪里和我如何解析HTML?

我试过通过代码src/chrome/browser/tab_contents,我找不到任何合理的地方,我可以做到这一切.

Gra*_*ler 5

看一下下面的概念应用程序层,它们代表了 Chromium 如何显示网页:

Chromium 如何显示网页:概念应用程序层

图片来源: https://docs.google.com/drawings/d/1gdSTfvLxbJDbX8oiWo5LTwAmXmdMQvjoUhYEhfhj0-k/edit

不同层的描述如下:

  • WebKit: Safari、Chromium 和所有其他基于 WebKit 的浏览器之间共享的渲染引擎。该端口是 WebKit 的一部分,它与平台相关的系统服务(例如资源加载和图形)集成。
  • Glue:将 WebKit 类型转换为 Chromium 类型。这是我们的“WebKit 嵌入层”。它是 Chromium 和 test_shell(它允许我们测试 WebKit)这两个浏览器的基础。
  • 渲染器/渲染主机:这是 Chromium 的“多进程嵌入层”。它跨进程边界代理通知和命令。
  • WebContents:可重用组件,是内容模块的主类。它可以轻松嵌入,以允许将 HTML 多进程渲染到视图中。有关详细信息,请参阅内容模块页面。
  • Browser:代表浏览器窗口,它包含多个WebContent。
  • 选项卡助手:可以附加到 WebContents 的单个对象(通过 WebContentsUserData mixin)。浏览器将它们的分类附加到它所保存的 WebContentses 中(一个用于网站图标,一个用于信息栏等)。

由于您的目标是按元素和/或类访问和解释网页的 HTML 内容,因此您可以查看使用 Blink 的渲染过程:

渲染器使用Blink开源布局引擎来解释和布局 HTML。

Blink 有一个WebDocument,允许您访问网页的 HTML 内容和其他属性:

WebDocument document = GetMainFrame()->GetDocument();
WebElement element = document.GetElementById(WebString::FromUTF8("example"));
// document.Url();
Run Code Online (Sandbox Code Playgroud)