屏幕刮取Web应用程序的页面 - 内部服务器错误

时间:2010-08-09 20:09:00

标签: c# screen-scraping

我正在屏幕上抓取一个仅包含文本的Web应用程序页面,并由第三方托管。它不是一个正确形成的HTML页面,但是显示的文本将告诉我们Web应用程序是启动还是关闭。

当我尝试刮取屏幕时,它会在尝试WebRequest时返回错误。错误是“远程服务器返回错误:(500)内部服务器错误。”

public void ScrapeScreen()
    {
        try
        {
            var url = textBox1.Text; 
            var request = WebRequest.Create(url);
            var response = request.GetResponse();
            var stream = response.GetResponseStream();
            var reader = new StreamReader(stream);
            var result = reader.ReadToEnd();
            stream.Dispose();
            reader.Dispose();
            richTextBox1.Text = result;
        }

        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

   }

我是如何从网页上获取文字的?

2 个答案:

答案 0 :(得分:1)

有些网站不喜欢默认的UserAgent。考虑将其更改为真实的内容,例如:

((HttpWebRequest)request).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4"

答案 1 :(得分:0)

首先,试试这个:

HttpWebRequest request =(HttpWebRequest)WebRequest.Create(url);

但是,如果您只是在寻找文本而不必对服务器进行任何数据发布,那么您可能需要查看webClient类。它更像是一个真正的浏览器,并且会处理很多HTTP头文件,如果你坚持使用HttpWebRequest类,你最终可能需要调整它。