我正在屏幕上抓取一个仅包含文本的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);
}
}
我是如何从网页上获取文字的?
答案 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类,你最终可能需要调整它。