如何控制浏览器中加载的页面?

时间:2010-09-20 05:10:06

标签: xul

我想控制在网络浏览器中加载的网页。 XUL可以用于满足这一要求吗?

1 个答案:

答案 0 :(得分:1)

任何允许您注入DOM事件或脚本标记的内容都可用于控制网页。 XUL是一种用于描述GUI的语言,对此没有用。

以下是 如何控制网页的一些示例。您没有提供有关您打算如何使用所述控件(浏览器扩展,后台脚本等)的任何详细信息,因此我将举例说明我能想到的所有情况:

如果您希望远程控制网页作为独立于普通浏览器的脚本的一部分,可以选择以下选项:

  • 如果您不需要运行网站的Javascript ,请使用针对PerlPythonRuby或可能的Mechanize等伪浏览器Twill如果你是shell脚本。它们比实际执行Javascript的东西更轻,但它们仍然会处理cookie,让你以编程方式填写表单和点击链接。
  • 如果您确实需要运行网站的javascript ,最简单的解决方案是编写一个Python脚本,该脚本使用PyQt和QWebView,但实际上并不需要显示任何窗口。 QtWebKit提供了一个受jQuery启发的界面,用于在网站的DOM中进行调整,并能够注入Javascript,这就是远程控制网页所需的一切。 (QtWebKit 要求GUI在Linux上运行,但您不需要实际显示任何窗口来使用它。)必要的QtWebKit API也应该出现在任何其他的Qt绑定中您可能更喜欢的语言。
  • 如果您不能使用QtWebKit但需要Javascript (也许您正在编写GTK +应用程序),您的选项会受到更多限制,但任何浏览器小部件都应该至少支持注入新的<script>标记来控制页面。 This answer(也是我的)有一个用于各种Python工具包的Web小部件列表,其中大多数(可能全部)也可用于其他语言。您还需要阅读编写用户脚本的说明。

如果您想在现有浏览器内编写网页(可能隐藏广告或在您经常访问的网页上跳过唠叨屏幕),可以选择以下选项:

  • 如果您想修改浏览器本身,请编写浏览器扩展程序。这可能就是你询问XUL的原因。你应该问的是Javascript(Firefox和Chrome扩展的部分实际上是用Javascript编写的.XUL只是用于在Firefox中布局窗口。)...具体来说,Chrome调用的是Content Scripts 。 Firefox内部过于复杂,无法学习相同的术语。)这是您最强大的选项,但它也是最常用的,您的扩展只能在一个浏览器中使用。
  • 如果您只想修改或控制网站,请写一个userscript。用户脚本是Javascript的一部分,浏览器会将其注入您选择的页面。 Firefox使用GreasemonkeyChromeOpera,各种鲜为人知的浏览器,以及IE7Pro扩展名,通过Internet Explorer以某种形式支持它们不能修改浏览器的界面,但除此之外,它们非常强大。 (example