用正则抓取网页内容

beblue 2008-11-24 04:51:49
网址是http://www.weather.com.cn/html/weather/101230101.shtml
一个天气预报的,,我要采集最新三天的天气预报,,

最终得到的内容格式如下:


今天是2008年11月24日 星期一
今天:多云转阴,23℃/16℃,微风
明天:多云转阴,22℃/15℃,微风
后天:多云转阴,23℃/13℃,微风


至少需要13个参数
希望高手帮忙下,本人对正则实在是七窍通六窍
...全文
280 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
songhuan 2008-11-25
  • 打赏
  • 举报
回复
<div class="fut_weatherbox7">\r\n.*<h3>(?<day>\d*).*</h3>.*\r\n.*\r\n.*<h4 class="temp00_dn">(?<weather>.*)</h4>\r\n.*<h4 class="temp01_dn">高温:(?<High>.*)</h4>\r\n.*<h4 class="temp02_dn">低温:(?<low>.*)</h4>\r\n.*<h4 class="temp03_dn">(?<mark>.*)</h4>



本人已经测试成功,如果是vb,请把"替换成""
beblue 2008-11-25
  • 打赏
  • 举报
回复
匹配不到啊
止戈而立 2008-11-25
  • 打赏
  • 举报
回复
<div class="linetop_weather">(?:\s*<[^>]*>){2}([^<>]+)[\s\S]+?<div class="box_contenttodayinwea"[^>]*>[\s\S]*?<em[^>]*>(?:<[^>]*>)*([^<]+)(?:(?!<em)[\s\S])*<em[^>]*>(?:<[^>]*>)*([^<]+)(?:(?!<em)[\s\S])*<em[^>]*>(?:<[^>]*>)*([^<]+)[\s\S]*?<div class="fut_weather"[^>]*>
\s*<div class="fut_weatherbox7">\s*<h3>([^<]+)[\s\S]*?<h4 class="temp00_dn">([^<]+)</h4>\s*<h4 class="temp01_dn">([^<]+)</h4>\s*<h4 class="temp02_dn">([^<]+)</h4>\s*<h4 class="temp03_dn">([^<]+)</h4>\s*</div>\s*<div class="fut_weatherbox7">\s*<h3>([^<]+)[\s\S]*?<h4 class="temp00_dn">([^<]+)</h4>\s*<h4 class="temp01_dn">([^<]+)</h4>\s*<h4 class="temp02_dn">([^<]+)</h4>\s*<h4 class="temp03_dn">([^<]+)</h4>

把上面的正则表达式放在this.textBox2的文本框中,

string result=string.Empty;
Match m=reg.Match(this.textBox2.Text);
if(m.Success)
{
result+=m.Groups[1].Value+"\r\n今天:"+m.Groups[2].Value+","+m.Groups[3].Value+","+m.Groups[4].Value+"\r\n明天:"+m.Groups[5].Value+","+m.Groups[6].Value+","+m.Groups[7].Value+"/"+m.Groups[8].Value+","+m.Groups[9].Value+"\r\n后天:"+m.Groups[10].Value+","+m.Groups[11].Value+","+m.Groups[12].Value+"/"+m.Groups[13].Value+","+m.Groups[14].Value;
}
this.textBox3.Text=result;


好晕好晕。。
beblue 2008-11-25
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20081104/09/a99170ec-489f-4659-8979-7a410fad026b.html
这是原来的问题,已经解决了,网站改版了就用不了了
beblue 2008-11-25
  • 打赏
  • 举报
回复
我现在的需求就是正则表达式

希望各位帮忙看下
surewy 2008-11-24
  • 打赏
  • 举报
回复
mark
hhhh63 2008-11-24
  • 打赏
  • 举报
回复
建议用XML的网页,标准的,好取,好用
xian_yun80 2008-11-24
  • 打赏
  • 举报
回复
顶下
hornbills 2008-11-24
  • 打赏
  • 举报
回复
网页采集数据本来就不是正统的做法,往往是不正统的做法会催生占据未来的应用..

网页设计随意性很大,目的是为人方便浏览,不是让机器方便采集,因此从一开始就是识别的问题,这个题目可简单可复杂

简单的做法无法应对变化,复杂的应该能应对变化,最终和人工智能一样..

建议
1、了解环境,搞清楚网页的字及图片所代表的含义
2、字或者图片跟真实的含义建立对应关系
3、确定所要采集信息的位置,主要是位置特点
4、根据位置特点提取网页的字及图片,找出对应的含义写入数据库


上例
/m/i/icon_weather/42x30/d01.gif 代表白天多云
/m/i/icon_weather/42x30/n02.gif 代表晚上阴天

相对位置肯定是依照下面的关键信息查找了
<div class="box_contenttodayinwea" id="c_1_1">

明后天的天气依照获取今天的方式..

我认为不需要什么正则表达式来做这个事情


beblue 2008-11-24
  • 打赏
  • 举报
回复
发晚了,都下班了,晕得不行

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧