关于网页解析
问题描述:
private void button3_Click(object sender,EventArgs e) { listBox1.Items.Clear();关于网页解析
string szURL = textBox1.Text;// "http://localhost";
//textBox1.Text = szURL;
HttpWebRequest httpRequest;
HttpWebResponse httpResponse;
string bodyText = "";
Stream responseStream;
Byte[] RecvBytes = new Byte[Byte.MaxValue];
Int32 bytes;
httpRequest = (HttpWebRequest)WebRequest.Create(szURL);
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
responseStream = httpResponse.GetResponseStream();
while (true)
{
bytes = responseStream.Read(RecvBytes,
0, RecvBytes.Length);
if (bytes <= 0) break;
bodyText += System.Text.Encoding.UTF8.GetString(RecvBytes,
0, bytes);
}
//listBox1.Items.Add(bodyText);
textBox2.Text = bodyText;
MatchCollection m1 = Regex.Matches(bodyText, @"(<a.*?>.*?</a>)",
RegexOptions.Singleline);
// 2.
// Loop over each match.
foreach (Match m in m1)
{
string value = m.Groups[1].Value;
// LinkItem i = new LinkItem();
// 3.
// Get href attribute.
Match m2 = Regex.Match(value, @"<\s*script[^>]*>(?<content>.*?)<\s*/\s*\script\s*>",
RegexOptions.Singleline);
if (m2.Success)
{
listBox1.Text = m2.Groups[1].Value;
}
// 4.
// Remove inner tags from text.
string t = Regex.Replace(value, @"\s*<.*?>\s*", "",
RegexOptions.Singleline);
// i.Text = t;
listBox1.Items.Clear();
listBox1.Items.Add(t);
}
}
这是我的代码,它被赋予作为分配给我..我必须在标签之间的内容区分开来......独自从网页中的链接...我觉得很困难。请尽快帮助我..
答
解析HTML很困难,您应该尝试使用第三方框架来构建HTML DOM(最好使用某种形式的标记器)而不是使用正则表达式。当你使用.NET时,我强烈建议你看看使用HTMLAgility Pack。
它(HTML敏捷性包)是一个.NET代码库,使您解析“从网络中” HTML文件。解析器对“真实世界”格式错误的HTML非常宽容。对象模型与提出System.Xml非常相似,但是对于HTML文档(或流)。
谢谢你的想法 – user247958 2010-01-19 08:42:48