get ;以及很多url的状态码
本文关键字:url 状态 Title get | 更新日期: 2023-09-27 18:07:52
我有一个包含url的大列表(list urlList)。目标是为大列表中的每个url获取这三个信息(标签<title>
,标签<description>
和状态码)。请注意,这是一个非常大的url列表,它们可能包含相同的主机。
我试过使用HttpWebRequest,如下所示:
request = System.Net.WebRequest.Create(_URL) as HttpWebRequest;
request.UserAgent = "html-analyzor";
request.KeepAlive = false;
request.Timeout = 20000;
this._Response = request.GetResponse() as HttpWebResponse;
// Get title, description, statuscode ...
...
它在工作,但不是很好…我不知道它是否与请求的数量有关,但我有时会从一些url(不总是相同的url)得到错误(404,5XX,操作已超时…)
你们能帮帮我吗?
认为,
听起来您正在浏览URL列表,访问存储每个请求结果的每个URL。你说你的代码工作,但not very well
。实际上,它的行为完全符合我的预期,因为:
- 10k url是相当多的。假设90%成功,你将经历1000次失败,这将阻碍你的战略。详细信息请参见以下项目符号:
- 不是所有来自大URL列表的请求都有效(错误404)
- 您将无法访问(授权)所有的url(错误5xx) 你的超时时间很长,是20秒。有些请求在超时(失败)之前可能会占用所有的时间,从而显著降低应用程序的速度。创建一个更短的超时,并使该值可配置
- 您似乎没有使用线程。这是使用线程和分散工作负载的理想场所。这取决于你对
very long list
的定义。如果有足够多的url,你甚至可以考虑在几台不同的机器上运行它 - 您应该明白,进行这些调用会给目标服务器以及您的机器和网络带来额外的压力。这种额外的资源使用将减慢速度并使超时更有可能发生。