我有一个网页,当导航到只返回一个简单的文本值,如数字100.我需要从页面中获取该值,所以我可以在我的应用程序中使用它。该应用程序是一个简单的Windows窗体应用程序,上面有一个Web浏览器控件。
我尝试了很多东西,但它并没有抓住文本,就好像它不存在一样。然而,如果我右键单击并查看源代码,它就在那里。
这不是那么难......这只是一些文字。
只是澄清文件中包含NO html,只是一个数字。使用WebClient或WebRequest时,它不会返回值。
private void RegisterWindow_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("MYURL");
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// Check and see if we have navigated to the final page.
string registeredUrl = "MYURL";
string currentPage = webBrowser1.Url.ToString();
string response = string.Empty;
if (webBrowser1.Url.ToString() == registeredUrl)
{
// Now parse the authkey from the url
response = GetWebRequest(currentPage);
MessageBox.Show(response);
}
}
/// <summary>
/// Send a Web Request and get a Web Response back.
/// This respons can be a valid URL, simple text response, or
/// HTML response.
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public string GetWebRequest(string url)
{
var client = new WebClient();
var content = client.DownloadString(url);
return content;
}
答案 0 :(得分:2)
你应该可以像以下一样直截了当地做事:
var client = new WebClient();
var content = client.DownloadString("<YOUR URL>");
var number = Int32.Parse(content);
答案 1 :(得分:2)
如果文档只包含没有任何HTML的数字,则应该有效:
public string GetWebRequest()
{
return webBrowser1.Document.Body.InnerText;
}
答案 2 :(得分:1)
例如:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = _UserAgent;
request.CookieContainer = cookies; // optional
using (WebResponse response = request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
html = reader.ReadToEnd();
}
}
}
请记住,您的浏览器正在发送User-Agent标头,可能正在发送Cookie,可能正在通过已配置的代理服务器等。特别是对于安全或内部网站点,简单的WebClient调用可能不够。您可能需要使用Fiddler进行一些检查,如@SLaks建议的那样。
答案 3 :(得分:0)
您可以将页面HTML / TEXT内容加载到字符串中,然后使用字符串函数来提取数字。