我正在做一个数据收集方面的程序,其中有一块是读取HTML文件中的内容,但是HTML和XML文件不同,不好处理,有没有朋友做过这方面的东西,给个思路.多谢!
HTML代码大致如下,
<table>
<tr align='center' height='22' class="alternatingitem">
<td>手套</td>
<td>130</td>
<td><img src="images/uparrow.gif" title="正常" alt="正常" /></td>
</tr>
<tr>
.................
.................
</tr>
</table>
我想做的就是把里面的信息提取出来,如上面的HTML代码,信息提取后,得到下面的信息手套
130
正常能不能给出详细的代码.谢谢
HTML代码大致如下,
<table>
<tr align='center' height='22' class="alternatingitem">
<td>手套</td>
<td>130</td>
<td><img src="images/uparrow.gif" title="正常" alt="正常" /></td>
</tr>
<tr>
.................
.................
</tr>
</table>
我想做的就是把里面的信息提取出来,如上面的HTML代码,信息提取后,得到下面的信息手套
130
正常能不能给出详细的代码.谢谢
解决方案 »
- 各位大哥大姐大嫂大妹子们。。就是这段代码。。单独把sql语句拿出来查询没问题。。但是放到程序中就有问题。。问题在下面描述。。这里太短了。。
- 高内聚,低耦合怎么理解?
- combox下拉框初始化,以及初始化函数是哪个
- 后面的值覆盖了之前的..请帮忙看下.谢谢
- 不太明白InitializeComponent()
- 对于IComparable和ICompare一些疑问。
- 数据库返回影响行的问题
- DataTable如何在绑定数据的时候去掉不需要的列?
- C# GDI+绘制动态矩形的问题
- 我刚学C# 不过在创建WEB应用程序的时候遇到很奇怪的问题..... 请各位牛人解答~
- 急救,在线等 ,快点啊
- 用.net怎么读取.txt文件的内容?
{
this.webBrowser1.Navigate("d:\\test.htm");
} private void button1_Click(object sender, EventArgs e)
{
foreach (HtmlElement element in this.webBrowser1.Document.All)
{
try
{
//加入判断,看看element.TagName,就可以知道该element是什么对象了
this.listBox1.Items.Add(element.OuterText);
}
catch
{
}
}
}
读入部分就不写了,这里按个字符串处理
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim str As String
str = "<table>" & _
"<tr align='center' height='22' class=""alternatingitem"">" & _
"<td>手套</td>" & _
"<td>130</td>" & _
"<td><img src=""images/uparrow.gif"" title=""正常"" alt=""正常"" /></td>" & _
"</tr>" & _
"<tr>" & _
"................." & _
"................." & _
"</tr>" & _
"</table>"
Dim out As New StringBuilder("")
Dim Regex As New Regex( _
"alt=""([\u4E00-\u9FA5]*?)""|<td>([\d\w]*?)<\/td>", _
RegexOptions.IgnoreCase)
' "\[url\s*=\s*([^""]+)\s*\]([\s\S]*?)\[\/url\]", _
For Each m As Match In Regex.Matches(str)
out.AppendLine(m.Groups(1).Value & m.Groups(2).Value)
Next
L.Text = (out.ToString)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<form id="form1" runat="server">
<pre>
<asp:Literal ID="L" runat="server"></asp:Literal>
</pre>
</form>
</body>
</html>
string yourStr = ......;MatchCollection mc = Regex.Matches(yourStr, "<tr.*?\n.*?<td>(?<name>.+?)</td>.*?\n.*?<td>(?<number>.+?)</td>.*?\n.*?<td><.*?title=\"(?<title>.+?)\".*?</td>.*?\n.*?</tr>", RegexOptions.IgnoreCase);foreach(Match m in mc)
{
m.Groups["name"].Value;//1:手套
m.Groups["number"].Value;//2:130
m.Groups["title"].Value;//3:正常
}
这样就可以区匹配任意中文和HTML标签中间的内容了
不过如果网页本身有问题,就会不成功
我的MSN:[email protected]