获取<title>,&lt; Description&gt;和许多网址的状态代码

时间:2015-08-13 14:43:02

标签: c# .net

&lt; p&gt;我有一个包含url的大列表(List urlList)。目标是为大列表中的每个网址获取这三个信息(标记&lt;代码&gt;&lt; title&gt;&lt; / code&gt;,标记&lt;代码&gt;&lt; description&gt;&lt; / code&gt;和状态代码)。请注意,它是一个非常大的网址列表,它们可能包含相同的主机。&lt; / p&gt; &lt; p&gt;我尝试过使用HttpWebRequest,如下所示:&lt; / p&gt; &lt; pre&gt;&lt; code&gt; request = System.Net.WebRequest.Create(_URL)as HttpWebRequest; request.UserAgent =&#34; html-analyzor&#34 ;; request.KeepAlive = false; request.Timeout = 20000; this._Response = request.GetResponse()as HttpWebResponse; //获取标题,描述,状态代码...... ... &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;它正在工作,但不是很好...... 我不知道它是否与它必须提出的请求数量相关,但我有时会从某些网址中得到错误(404,5XX,操作超时...)(并非总是如此)相同的网址)&lt; / p&gt; &lt; p&gt;你能帮帮我吗?&lt; / p&gt; &LT; p为H.问候,和LT; / p为H.

1 个答案:

答案 0 :(得分:0)

听起来您正在查看URL列表,访问存储每个请求结果的每个URL。你说你的代码可以工作但是not very well。实际上,它的行为完全符合我的预期,因为:

  • 10k网址很多。假设90%的成功,您将遇到1000次失败,这些都会妨碍您的策略。有关详细信息,请参阅以下项目符号:
  • 并非所有来自大型网址列表的请求都有效(错误404)
  • 您将无权访问(授权)所有网址(错误5xx)
  • 你的超时时间很长,为20秒。在超时(失败)显着减慢应用程序之前,某些请求可能会占用所有时间。创建更短的超时并使该值可配置
  • 您似乎没有使用线程。这是使用线程和分散工作负载的理想场所。这实际上取决于您对very long list的定义。如果有足够的URL,您甚至可以考虑从几台不同的计算机上运行它
  • 您应该了解,拨打这些电话会对目标服务器以及您的计算机和网络造成额外压力。额外使用资源会减慢速度并使更多时间超时。