我希望能够搜索给定的HTML并找到某些标记
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string url = "http://www.google.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
}
}
如何将StreamReader中的内容转换为字符串,以便我可以进行进一步的分析......
答案 0 :(得分:2)
看看HTML Agility Pack。使用敏捷包可以获得比使用字符串函数自己解析html更好的结果。
答案 1 :(得分:0)
由于您正在使用Windows窗体应用程序,因此请使用WebBrowser控件。由于您可以访问DOM,因此很容易找到元素。
答案 2 :(得分:0)
这是来自控制台应用的代码段:
以下是我通过 HttpWebRequest 获取强力球主页的代码,并使用 RegEx 查找累积奖金,&阅读当前的累积奖金。
希望这会对你有所帮助。
string url = ConfigurationManager.AppSettings.GetValues("PBHomePage")[0];
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.ContentType = "text/html";
Regex regex = new Regex("(<font size=\"6\" color=\"#FFFFFF\"><strong>\\$)(\\d+)(\\.*)(\\d*)(\\s+Million</strong></font>)");
try
{
WebResponse response = webReq.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string webPage = reader.ReadToEnd();
if (!regex.IsMatch(webPage)) { return null; }
GroupCollection groups = regex.Match(webPage).Groups;
StringBuilder strJackpot = new StringBuilder(groups[2].Value);
if (!string.IsNullOrEmpty(groups[3].Value) && !string.IsNullOrEmpty(groups[4].Value))
{
strJackpot.Append(groups[3].Value + groups[4].Value);
}
jackpot = double.Parse(strJackpot.ToString());
}
catch (WebException ex)
{
Console.WriteLine("Error in getting Latest Jackpot");
}