以编程方式分析CSS布局

时间:2011-02-16 10:56:26

标签: php python css statistics

我想抓住一些博客并以编程方式分析他们的基于html和CSS的布局,以查看例如如果侧边栏位于主要内容的左侧或右侧,有多少列以及它们的宽度。

我如何以最好的方式做到这一点?我可以使用任何工具或库吗?

(我更喜欢Python或PHP的解决方案。)

3 个答案:

答案 0 :(得分:2)

使用纯服务器端CSS和HTML解析这听起来非常困难 - 您必须重新创建浏览器的渲染引擎才能获得可靠的结果。

根据你的需要,我可以想到这方面的某种方式:

  • 使用wget--page-requisites

  • 等内容获取网页和样式表
  • 然后:

    • 使用Selenium之类的工具浏览每个下载的页面,搜索元素名称并输出它们的位置(如果可以在Selenium中使用。我认为它是,但我不确定)

    • 创建一个注入每个下载页面的jQuery。 jQuery搜索名为“sidebar”,“toolbar”等的元素,获取其位置,将结果保存到本地AJAX片段,然后继续下一个下载的页面。您只需要在浏览器中打开第一页,其余的将自动发生。实现起来并非易事,但可能。

如果您可以使用像.NET这样的客户端应用程序平台,那么构建一个包含浏览器控件的自定义应用程序可能会更容易,其DOM可以比仅使用jQuery更自由地访问。

答案 1 :(得分:0)

你在找这个吗?

http://cthedot.de/cssutils/

这是Google搜索的第一个热门话题。至少还有其他四个看起来很有希望。也许您应该尝试使用Google,列出您找到的内容,并就特定软件包提出具体建议。

答案 2 :(得分:0)

似乎可以通过PhantomJS实现这一点,使用类似这样的Javascript:

phantom.viewportSize = { width: 1024, height: 768 };

var page = new WebPage();

page.open("http://mashable.com/", function(status) {
    if (status === "success")
    {
        page.includeJs("https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js", function() {
            var position = page.evaluate(function() {
                return jQuery('#sidebar').position();
            });

            // Now position.left and position.top contains the
            // position of the #sidebar element. Use other
            // jQuery functions to calculate the relative position.

            phantom.exit();
        });
    }
});