【问题标题】:How to create screen scraping? "i want to know just the cycle"如何创建屏幕抓取? “我只想知道周期”
【发布时间】:2009-03-25 23:02:37
【问题描述】:

我想制作一个与http://www.vimeo.com/1626505 完全相同的想法的屏幕抓取我想知道的是如何做到这一点? - 当用户单击书签时,它会将 URL 发送到我的服务器,然后我的服务器将返回客户端页面,其中包含将与 iframe 加载一起加载的报废 javascript 文件,java 脚本将报废当前数据页面并放在 iframe 上。

- Bookmarklet 将只向我的服务器发送 URL,我的服务器将使用 .Net 代码打开该 url 并将其废弃,从中获取所需的数据,然后将填充了正确数据的 iframe 发送给客户端。

哪个是对的?还是有其他方法?为什么它不是另一个?

【问题讨论】:

    标签: .net asp.net javascript html


    【解决方案1】:

    客户端

    优点

    该页面已在那里加载
    用JS解析DOM还是比较容易的

    缺点

    JS开启了吗?
    用户的机器有多快?
    如果用户在中途浏览了会发生什么?

    服务器端

    优点

    比 JS 更多的控制(我假设)
    页面嗅探应该很快

    缺点

    页面被点击两次(网络流量增加)
    您的服务器实际上必须解析/处理页面(它如何扩展?)

    真的想不起来了(我敢肯定我错过了很多)。底线是,它是衡量您的客户端/服务器端技能与带宽和服务器负载考虑因素之间的关系。

    【讨论】:

    • 那么在客户端页面插入javascript文件,并让这些脚本废弃这个页面,把数据放到iframe上,就没有安全问题了吗?
    • 浏览器(或插件)可能会阻止您的代码执行此操作。这是我没有想到的另一件事。总体而言,将 URL 发送到您的服务器并对其进行处理可能是最安全/最好的,因为这样可以防止安全问题以及用户浏览网站的速度过快。
    【解决方案2】:

    我不知道它是否和 Vimeo 中的一样,但这是一个使用 C# 的简单服务器端实现:

     WebRequest wrContent = WebRequest.Create("http://www.site.com/yourtargetpage.html");
     Stream objStream = wrContent.GetResponse().GetResponseStream();
     StreamReader objStreamReader = new StreamReader(objStream);
     Content = objStreamReader.ReadToEnd();
     DataBind();
    

    “内容”是一个字符串变量,在页面类的头部声明:

     protected string Content;
    

    将其放置在您希望内容出现的 ASPX 页面中:

     <%# Content %>
    

    这很容易。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2012-11-28
      相关资源
      最近更新 更多