我当前正在尝试执行此操作:网页加载后,找出URL是否具有某种模式(例如www.wikipedia.com/*
),然后,如果可以,则可以解析该网页的HTML内容对BeautifulSoup
进行操作,并检查网页是否具有类div
和ID foo
的{{1}}。任何想法我都可以在哪里写这段代码,也就是我可以在哪里访问URL,我需要在哪里收听以了解网页已完成加载,接下来可以查找URL和HTML内容,以及在何处以及如何解析HTML?
我尝试遍历boo
中的代码,找不到可以执行所有操作的合理位置。
答案 0 :(得分:4)
看看下面的概念应用程序层,它们代表Chromium如何显示网页:
图片来源: https://docs.google.com/drawings/d/1gdSTfvLxbJDbX8oiWo5LTwAmXmdMQvjoUhYEhfhj0-k/edit
described的不同层为:
- WebKit::渲染引擎在Safari,Chromium和所有其他基于WebKit的浏览器之间共享。 端口是WebKit的一部分,与基于平台的系统服务(例如资源加载和图形)集成。
- 胶水::将WebKit类型转换为Chromium类型。这是我们的“ WebKit嵌入层”。它是两个浏览器Chromium和test_shell(允许我们测试WebKit)的基础。
- 渲染器/渲染主机:这是Chromium的“多进程嵌入层”。它跨进程边界代理通知和命令。
- WebContents::是可重复使用的组件,它是Content模块的主要类。它很容易嵌入,以允许将HTML的多进程呈现到视图中。有关更多信息,请参见content module pages。
- 浏览器::表示浏览器窗口,其中包含多个WebContentses。
- 标签助手::可以附加到WebContents的单个对象(通过WebContentsUserData mixin)。浏览器会将其中的各种内容附加到它所拥有的WebContents(一个用于收藏夹图标,一个用于信息栏等)。
由于您的目标是按元素和/或类访问和解释网页的HTML内容,因此您可以查看呈现过程which uses Blink:
渲染器使用Blink开源布局引擎来解释和布局HTML。
眨眼具有WebDocument
class,可让您访问HTML内容和网页的其他属性:
WebDocument document = GetMainFrame()->GetDocument();
WebElement element = document.GetElementById(WebString::FromUTF8("example"));
// document.Url();
答案 1 :(得分:1)
最干净的将通过镀铬remote debugging protocol
使用DOM方法获取根DOM和walk, search, or query the dom
这也将使测试变得更加简单:您可以使用现有的客户端库(有很多)以自己喜欢的脚本语言来实现逻辑,并且一旦可行,就可以用C ++来实现。
如果出于某种原因必须在Chromium中进行此操作,则下一步应启动连接到此线程并执行操作的线程。
答案 2 :(得分:1)
您需要 使用服务器端库来解析请求的HTML页面的内容 。例如,在Java中,有一个库“ jsoup ”,其他服务器端语言可能还有另一种替代方法。由于安全限制,您可能会发现主要问题是“ 禁止访问”,但是由于您不尝试访问REST服务或类似的东西,而只是解析纯HTML来找到找到的字符串模式,必须使用“ jsoup”轻松完成。有一个项目对类似的内容进行了编程,以访问网站页面并解析响应html字符串。
Document doc = Jsoup.connect("http://jsoup.org").get();
Element link = doc.select("a").first();
String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://jsoup.org/"