错误 500 Web 请求无法抓取网站

Error 500 Web Request Can't Scrape WebSite

我用浏览器访问网站没问题,但是当我以编程方式尝试访问网站进行抓取时,出现以下错误。

The remote server returned an error: (500) Internal Server Error.

这是我正在使用的代码。

using System.Net;

string strURL1 = "http://www.covers.com/index.aspx";
WebRequest req = WebRequest.Create(strURL1);

// Get the stream from the returned web response
StreamReader stream = new StreamReader(req.GetResponse().GetResponseStream());
System.Text.StringBuilder sb = new System.Text.StringBuilder();
string strLine;
// Read the stream a line at a time and place each one
while ((strLine = stream.ReadLine()) != null)
{
  if (strLine.Length > 0)
    sb.Append(strLine + Environment.NewLine);
}

stream.Close();

这个让我难住了。 TIA

它是用户代理。

许多网站(例如您尝试抓取的网站)会验证用户代理字符串以阻止您抓取它们。就像你一样,这很快就会阻止初级程序员尝试抓取。它并不是真正阻止刮擦的可靠方法 - 但它难倒了一些人。

设置用户代理字符串将起作用。将代码更改为:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strURL1);
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"; // Chrome user agent string

..会好的

它看起来像是在进行某种用户代理检查。我能够在 PowerShell 中重现您的问题,但我注意到 PowerShell cmdlet Invoke-WebRequest 工作正常。

所以我连接了 Fiddler,重新运行它,并从 Fiddler 中窃取了用户代理字符串。

尝试将 UserAgent 属性 设置为: User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; en-US) WindowsPowerShell/4.0