解决方案 »
- 一个企业门户网站日IP访问量超过1W,在Alexa上显示全球排名20W,这样的网站算成功么?
- 独享主机 5M 会被当做肉鸡么
- 请教 点击换图片
- 如何在数据库中存放图片
- 页面javascript验证问题
- 无询问关闭窗口的问题!
- asp.net初学,有些低级问题请教大家,望不吝赐教
- 后台管理页面iframe
- 我用的是Win2003,装有.NetFramework1.0,1.1,我怎么知道项目的是哪一个版本,可不可以指定?
- 先前用得好好的站点,突然有一个aspx页面不能访问了,请教下有哪些原因可能引起
- 怎么读取别的网页上面的新闻到自己网页上面(asp。net、)
- 怎么读取别的网页上面的新闻到自己网页上面(asp.net)(急急急!!!)
望风而逃不停息.
柳叶美眉真漂亮,
清晨公汽太难挤.
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups["id"].Value + "\n";
richTextBox2.Text += m.Groups["title"].Value + "\n";
richTextBox2.Text += m.Groups["tags"].Value + "\n";
richTextBox2.Text += m.Groups["time"].Value + "\n";
}
c#中用正则匹配后取出值就可以了,详细操作就不说了,你懂的
你发的那个脚本错误,不能看,我想应该差不多吧!方法都和25楼差不多,就是正则不一样
{
//HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(@"http://wz.csdn.net/my");
//request.Timeout = 20000;
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
StreamReader reader = new StreamReader(@"E:\wz\网摘管理.htm");
string strTemp = reader.ReadToEnd();
Regex reg = new Regex(@"(?is)<table cellspacing=""0"" cellpadding=""4"" border=""0"" id=""ctl00_ctl00_ContentPlaceHolder0_ContentPlaceHolder1_bkList""[^>]*>\s*<tr[^>]*>(?:(?!</?tr).)*</tr>\s*<tr[^>]*>\s*<td[^>]*>(?:(?!</?td).)*</td>\s*<td[^>]*>(?<id>\d+)</td>\s*<td[^>]*><a[^>]*>(?<title>(?:(?!</?a).)*)</a></td>\s*<td[^>]*>(?<tags>(?:(?!</?td).)*)</td>\s*<td[^>]*>(?<time>(?:(?!</?td).)*)</td>");
MatchCollection mc = reg.Matches(strTemp);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups["id"].Value + "\n";
richTextBox2.Text += m.Groups["title"].Value + "\n";
richTextBox2.Text += m.Groups["tags"].Value + "\n";
richTextBox2.Text += m.Groups["time"].Value + "\n";
} }
通过读取文本,不行啊,过客。。我先来试试波导的,呵呵。
我已经测试的是本地的一个html文件。或者说,我直接复制之后粘贴到excel也许博客园也可以帮我导入也说不定呢,呵呵。
foreach (Match m in mc)
{
Console.WriteLine(m.Groups["id"].Value);
Console.WriteLine(m.Groups["title"].Value);
Console.WriteLine(m.Groups["tag"].Value);
Console.WriteLine(m.Groups["date"].Value);
}
using (StreamReader sr = new StreamReader(@"E:\网摘管理.htm"))
{
html = sr.ReadToEnd();
}
Regex reg = new Regex(@"(?is)<table[^>]*?id=(['""]?)ctl00_ctl00_ContentPlaceHolder0_ContentPlaceHolder1_bkList\1[^>]*>(\s*<tbody>)?\s*<tr[^>]*>(?:(?!</?tr).)*</tr>\s*<tr[^>]*>\s*<td[^>]*>(?:(?!</?td).)*</td>\s*<td[^>]*>(?<id>\d+)</td>\s*<td[^>]*><a[^>]*>(?<title>(?:(?!</?a).)*)</a></td>\s*<td[^>]*>(?<tags>(?:(?!</?td).)*)</td>\s*<td[^>]*>(?<time>(?:(?!</?td).)*)</td>");
MatchCollection mc = reg.Matches(html);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups["id"].Value + "\n";
richTextBox2.Text += m.Groups["title"].Value + "\n";
richTextBox2.Text += m.Groups["tags"].Value + "\n";
richTextBox2.Text += m.Groups["time"].Value + "\n";
}
foreach (Match m in mc)
{
Console.WriteLine(m.Groups["id"].Value);
Console.WriteLine(m.Groups["url"].Value);
Console.WriteLine(m.Groups["title"].Value);
Console.WriteLine(m.Groups["tag"].Value);
Console.WriteLine(m.Groups["date"].Value);
}
我写正则的时候就有疑问,你居然不要链接Regex reg = new Regex(@"(?is)<table[^>]*?id=(['""]?)ctl00_ctl00_ContentPlaceHolder0_ContentPlaceHolder1_bkList\1[^>]*>(\s*<tbody>)?\s*<tr[^>]*>(?:(?!</?tr).)*</tr>\s*<tr[^>]*>\s*<td[^>]*>(?:(?!</?td).)*</td>\s*<td[^>]*>(?<id>\d+)</td>\s*<td[^>]*><a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)[^>]*>(?<title>(?:(?!</?a).)*)</a></td>\s*<td[^>]*>(?<tags>(?:(?!</?td).)*)</td>\s*<td[^>]*>(?<time>(?:(?!</?td).)*)</td>");
MatchCollection mc = reg.Matches(html);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups["id"].Value + "\n";
richTextBox2.Text += m.Groups["url"].Value + "\n";
richTextBox2.Text += m.Groups["title"].Value + "\n";
richTextBox2.Text += m.Groups["tags"].Value + "\n";
richTextBox2.Text += m.Groups["time"].Value + "\n";
}
最近的心得,有些时候不用吧html规则限制的太死,只要匹配[^>]+>的个数,能很有效的简化正则C# codeMatchCollection mc = Regex.Matches(html, @"</td><td style=""width:60px;"">(?<id>\d+)(?:[^>]*>){2}<a href=(?<url>……
过客啊,这个CSDN的正则问题可少不了你的帮助啊,呵呵。
不过看到公司的电厂项目有这种类似的功能
/**
* 没时间测试了。应该差不多
* 这个方法可以把整个html输出csv,csv可以用excel打开。csv的通用性比xls强,是纯文本
*/
String void generateCsv(String html,FileWriter fw){
html=html.replaceAll(".*\\<tbody\\>|\\</tbody\\>.*|\\<td\\>|\\<tr\\>|\\<th\\>","").replaceAll("\\</td\\>|\\</th\\>",",")
.replaceAll("\\</tr\\>","\r\n");
fw.write(html);
}