【问题标题】:How can I download only part of a page?如何只下载页面的一部分?
【发布时间】:2015-01-03 22:44:11
【问题描述】:

我的网站上有 100 个页面,但我只想下载部分页面而不是所有页面内容。

我希望每页只下载一盒,文件大小为 10 KB。 为此,我使用 WebClient 和 htmlagilitypack 。

 WebClient Client = new WebClient();
 var result = Encoding.GetEncoding("UTF-8").GetString(Client.DownloadData(URL));

【问题讨论】:

  • 投了赞成票,因为这是一个不错的问题。
  • @cybermonkey 非常感谢
  • @cybermonkey 感谢添加图片。
  • 您的网站结构如何,服务方式如何?例如,如果您有一个打开一组选项的 CMS,并且如果您有一种服务器端语言,则可以使用您可以使用适当的代码设置一个单独的 URL,以提取给定资源的所需位置。

标签: c#


【解决方案1】:

很遗憾,这是不可能的,因为 HTTP 的设计目的不是提供网页的特定部分。它确实支持range requests,但为此您需要知道所需内容的确切位置(以字节为单位)。

你可以

  • 下载整个页面,然后
  • 使用 HTML 解析库来提取您需要的部分。

【讨论】:

  • 可能值得指出的是,这可以通过 PHP 的 GET 请求来完成;发送附加到 URL 的请求,它只显示他们想要的内容。
【解决方案2】:

你无法做到这一点。

唯一的解决方案是改变网站结构本身。如果您可以控制服务器 -

更改您网站的架构,使框中的数据可以通过 ajax 调用访问。 现在您可以通过 WebClient 获取数据。 如果该数据已通过 API 调用提供,您可以将 WebClient 指向该 URI。

这是一个基于 ajax 构建网站的示例 - AJAX with jQuery and ASP.NET

【讨论】:

  • 可能值得指出的是,这可以通过 PHP 的 GET 请求来完成;发送附加到 URL 的请求,它只显示他们想要的内容。
  • 我假设 OP 正在使用 Microsoft TechStack。所以我以我的例子为基础。
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
相关资源
最近更新 更多