【问题标题】:How to Scrape websites, client side or server side?如何抓取网站,客户端或服务器端?
【发布时间】:2009-04-05 14:27:37
【问题描述】:

我正在创建一个书签按钮,当用户在其浏览器中单击此按钮时,它将抓取当前页面并从该页面获取一些值,例如价格、商品名称和商品图片。

这些字段将是可变的,意味着获取这些值的逻辑对于每个域“amazon, ebay”来说都是不同的。

我的问题是:

  • 我应该使用 javascript 来抓取这些数据然后发送到服务器吗?
  • 或者只是将 URL 发送到我的服务器端,然后使用 .net 代码来抓取值?
  • 最好的方法是什么?为什么它更好?优点,缺点?

看看这个视频你就会明白我到底想做什么http://www.vimeo.com/1626505

【问题讨论】:

  • Amr - 感谢您选择我的答案。

标签: .net asp.net javascript


【解决方案1】:

如果您想从另一个站点提取信息以用于您的站点(例如,用 ASP.NET 编写),那么您通常会在服务器端执行此操作,以便您拥有丰富的用于处理结果的语言(例如 C#)。您将通过 .NET 中的 WebRequest 对象来执行此操作。

客户端处理的主要用途是使用 Javascript 提取信息以显示在您的网站上。一个示例是天气频道提供的脚本,用于在您的网站上显示一个小天气框或用于非常简单的操作,例如将页面添加到收藏夹。

更新:Amr 写道,他正在尝试重新创建一些流行的屏幕抓取软件的功能,这需要一些非常复杂的处理。 Amr,我会考虑创建一个使用 IE 浏览器对象来显示网页的应用程序 - 这很简单。然后,您可以拉取 InnerHTML(我认为,自从我实现基于 IE 对象的程序以来已经有几年了)来检索页面的内容并发挥您的作用。当然,您可以使用 WebRequest 对象(只需将浏览器对象中使用的 URL 传递给它),但这不会很有效,因为它会再次下载页面。

这就是你所追求的吗?

【讨论】:

  • 这是一个小书签,这很容易做到,但落入坏人手中会很危险。但是请查看 Magnolia 以获得出色的书签应用程序。
  • 谢谢罗伯特。我不熟悉书签或 Magnolia。我去看看。
  • 什么是 Magnolia,它的 URL 是什么?
  • 我的准确拼写是 Ma.gnolia 反正谷歌它就在那里
【解决方案2】:

如果您只想使用 JavaScript 来执行此操作,那么您可能会拥有一个相当大的书签,除非您知道将使用它的每个站点的确切布局(即使那样它也会很大)。

我看到的一种常见方法是在您自己的服务器上使用 Web 服务,您的书签(使用 JavaScript)将重定向到该服务器以及一些参数,例如您正在查看的页面的 URL。然后,您的服务器将抓取页面并解析 HTML 以获取您感兴趣的内容。

一个很好的例子是"Import to Mendeley" 书签,它将您正在访问的页面的 URL 传递到它的服务器,然后提取有关页面上列出的科学论文的信息并将它们导入您的收藏。

【讨论】:

    【解决方案3】:

    我会在服务器端抓取它,因为(我是 Java 人)我更喜欢静态语言而不是动态脚本语言,所以在后端维护逻辑对我来说会更舒服。另一方面取决于您要抓取多少项目以及这样做的逻辑有多复杂。也许这些值可以在 JavaScript 中使用单个 id 选择器进行解析,然后服务器端处理可能会过大。

    【讨论】:

      【解决方案4】:

      Bookmarklet 根据定义是客户端的,但您可以让客户端依赖于服务器,但您的示例没有提供足够的信息。你想用抓取的信息做什么?

      【讨论】:

        【解决方案5】:

        如果您在书签中包含抓取代码,如果您包含新功能或错误修复,您的用户将不得不更新他们的书签。在服务器端进行,您的所有用户都会立即获得新内容:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-22
          • 1970-01-01
          • 1970-01-01
          • 2019-01-06
          • 2011-03-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多