Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 各种分析网站的方法的优缺点是什么?_Html_Firefox_Iframe_Yql_Add On - Fatal编程技术网

Html 各种分析网站的方法的优缺点是什么?

Html 各种分析网站的方法的优缺点是什么?,html,firefox,iframe,yql,add-on,Html,Firefox,Iframe,Yql,Add On,我想写一些代码来查看网站及其资产,并创建一些统计数据和报告。资产将包括图像。我希望能够跟踪链接,或者至少尝试识别页面上的菜单。我还想根据类名等猜测一下CMS是如何创建这个网站的 我将假设这个站点是相当静态的,或者是由CMS驱动的,但不像RIA 关于我如何进步的想法 1) 将站点加载到iFrame中。这很好,因为我可以用jQuery解析它。或者我可以吗?似乎我会受到跨站点脚本规则的阻碍。我已经看到了解决这些问题的建议,但我认为浏览器将继续限制这些问题。书签会有帮助吗 2) Firefox插件。这可

我想写一些代码来查看网站及其资产,并创建一些统计数据和报告。资产将包括图像。我希望能够跟踪链接,或者至少尝试识别页面上的菜单。我还想根据类名等猜测一下CMS是如何创建这个网站的

我将假设这个站点是相当静态的,或者是由CMS驱动的,但不像RIA

关于我如何进步的想法

1) 将站点加载到iFrame中。这很好,因为我可以用jQuery解析它。或者我可以吗?似乎我会受到跨站点脚本规则的阻碍。我已经看到了解决这些问题的建议,但我认为浏览器将继续限制这些问题。书签会有帮助吗

2) Firefox插件。这可以让我绕过跨站点脚本问题,对吗?似乎是可行的,因为Firefox(以及GreaseMonkey)的调试工具可以让你做各种事情

3) 在服务器端抓取站点。使用服务器上的库进行解析


4) YQL。这不是为解析站点而构建的吗?

您只需获取源代码(XHTML/HTML)并解析它。几乎在任何现代编程语言中都可以做到这一点。从连接到Internet的您自己的计算机

iframe是一个用于显示HTML内容的小部件,它不是一种用于数据分析的技术。您可以分析数据,而无需将其显示在任何位置。你甚至不需要浏览器

Python、Java、PHP等语言中的工具对于您的任务来说肯定比Javascript或Firefox扩展中的任何东西更强大


网站背后的技术也不重要。不管浏览器如何呈现,XHTML/HTML只是一个字符串。要找到您的“资产”,您只需查找特定的HTML标记,如“img”、“object”等。

我认为编写扩展可能是最简单的方法之一。例如,它是在Firebug之上开发的,它提供了一些您正在寻找的功能(例如图像、CSS和Javascript摘要)。

我的建议是:

a) 选择脚本语言。我建议使用Perl或Python:也可以使用curl+bash,但它没有异常处理

b) 使用python或perl库,通过脚本加载主页。 尝试Perl模块

Python有很多内置模块,请访问www.feedparser.org

c) 检查服务器头(通过HTTP HEAD命令)以查找应用程序服务器名称。如果你幸运的话,你还可以找到CMS的名字(ID WordPress等)

d) 使用GoogleXMLAPI请求类似“link:sitedomain.com”的内容来查找指向该站点的链接:同样,您可以在Google主页上找到Python的代码示例。向谷歌询问域名排名也会有所帮助


e) 您可以在SQLite数据库中收集数据,然后在Excel中进行后期处理。

这取决于项目的规模。如果只是随意的,而不是完全自动化的,我强烈建议使用Firefox插件

我正好在类似项目的中间。它必须分析使用Javascript生成的页面的DOM。编写服务器端浏览器太难了,所以我们转向了其他一些技术:AdobeAIR、Firefox插件、用户脚本等

如果你不需要自动化,Fx插件是很棒的。脚本可以分析页面,向您显示结果,要求您更正不确定的部分,最后将数据发布到某个后端。您可以访问所有DOM,因此不需要编写JS/CSS/HTML/任何解析器(这将是一项非常糟糕的工作!)

另一种方法是AdobeAIR。在这里,您可以更好地控制应用程序—您可以在后台启动应用程序,在不进行交互的情况下执行所有解析和分析。缺点是,您无法访问页面的所有DOM。通过这个测试的唯一方法是设置一个简单的代理,获取目标URL,添加一些Javascript(创建一个受信任的、不受信任的沙盒桥)……这是一个肮脏的攻击,但它可以工作

编辑: 在AdobeAIR中,有两种方式可以访问外国网站的DOM:

  • 通过Ajax加载它,创建HTMLLoader对象,并将响应馈送到其中(
    loadString
    MethodIIRC)
  • 创建iframe,并将站点加载到不受信任的沙箱中
我不记得为什么了,但是第一种方法对我来说失败了,所以我不得不使用另一种方法(我认为其中涉及一些安全原因,我无法解决)。我必须创建一个沙箱来访问站点的DOM。这里有一点关于。其思想是创建一个代理,它添加一个简单的JS,创建
childSandboxBridge
,并向父级(在本例中为AIR应用程序)公开一些方法。脚本内容类似于:

window.childSandboxBridge = {
   // ... some methods returning data
}
(请小心-通过沙盒桥传递的内容存在限制-确定没有复杂对象!仅使用基本类型)

因此,代理基本上篡改了返回HTML或XHTML的所有请求。所有其他的都是原封不动地通过的。我已经使用Apache+PHP完成了这项工作,但是可以使用带有一些插件/自定义模块的真正代理来完成。这样我就可以访问任何站点的DOM

编辑结束

我所知道的第三种方法,也是最难的方法——建立一个类似于计算机的环境。然后你就可以自动使用firefox了。如果服务器上有Mac OS X,可以使用ActionScript为您实现自动化

总而言之:
  • PHP/服务器端脚本-您必须实现自己的浏览器、JS引擎、CSS解析器等,完全在控制之下并实现自动化
  • Firefox插件-可以访问DOM和所有内容。需要用户操作它(或者至少是一个开放的firefox会话,带有某种自动登录功能)。漂亮的接口