首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 抓取SINA网上的天气预报的正则怎么写``` [已结贴,结贴人:wuhan_dotnet]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuhan_dotnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-21 12:59:47 楼主
    例子网页:“http://php.weather.sina.com.cn/search.php?city=深圳”
    里面的HTML代码我已经获取到了``
    现在我就想用正则得到今天深圳的天气信息:
    城市:深圳
    日期:08年08月21日 星期四
    天气状况:多云转阵雨
    温度:34℃~26℃
    风力:≤3级 至 4-5级

    请问这个正则怎么写?
    先谢谢各位大侠了```
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tm62490309
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 13:28:101楼 得分:5
    不会  但是顶  学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dk385
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 13:49:162楼 得分:50
    C# code
    string result = ""; string strHtml = "..."; MatchCollection mc2 = Regex.Matches(strHtml, @"<div\s+class=""City_Data"">\s*<h3>今日\s+(?<city>.+?)</h3>\s*<p>(?<date>.+?)</p>[\s\S]+<div\s+class=""Weather_TP"">(?<TP>.+?)</div>\s*<div\s+class=""Weather_W"">(?<Wind>.+?)</div>", RegexOptions.IgnoreCase); foreach (Match m in mc2) { result += m.Groups["city"].Value + "\r\n" + m.Groups["date"].Value + "\r\n" + m.Groups["TP"].Value + "\r\n" + m.Groups["Wind"].Value + "\r\n"; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 13:51:413楼 得分:5
    好像有个webservice,你直接调用多好啊!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuhan_dotnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 14:35:384楼 得分:0
    谢谢2楼先``
    但我抓的怎么是后天的温度?和风力```
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jack20080808
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 14:51:515楼 得分:5
    这是我抓雅虎的
    C# code
     string GetTianQi() { string str = ""; string html = WebClientGetSource("http://weather.cn.yahoo.com/weather.html?city=%E6%B7%B1%E5%9C%B3"); string str = "(?<=<!--{{start:今日 -->[\\s\\S]*?<span class=\"f14\"><strong>)(\\D+)(\\d+)℃~(\\d+)℃"; Regex r = new Regex(str, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled); Match m = r.Match(html); if (m.Success) { str = m.Groups[1].ToString() + m.Groups[3].ToString() + "℃~" + m.Groups[2].ToString() + ""; } return str; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ajqc
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 15:09:456楼 得分:10
    匹配城市名:(? <= <h3>今日 ).*?(?= <)

    匹配日期:[0-9]{2,4}年[0-9]{1,2}月[0-9]{1,2}日.+?星期.+?(?= <)
    这个正则式能匹配出3天的来,你看需要用吧,匹配出的文本像这样的:08年08月21日-22日&nbsp;星期四,这样你只要把&nbsp;替换成空格就成了

    匹配天气状况和温度:(? <=Weather_TP\">).*?(?= <)
    这个正则式能匹配出3天的来,你看需要用吧,匹配出的文本像这样的:多云转阵雨 34℃~26℃
    再split一下就能分出天气和温度了

    匹配风力:(? <=风力:).*?(?= <)
    这个正则式能匹配出3天的来,你看需要用吧,匹配出的文本像这样的:≤3级 至 4-5级
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuhan_dotnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 16:29:127楼 得分:0
    还是不行啊````郁闷``
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • winner2050
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 16:41:198楼 得分:5
    直接调用人家的接口
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuhan_dotnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-27 17:48:019楼 得分:0
    点改是抓的"后天"的风力和温度?麻烦谁在给我个完全的正则表达式``谢谢``
    只要当天的数据```
    城市:深圳
    日期:08年08月21日 星期四
    天气状况:多云转阵雨
    温度:34℃~26℃  (温度要2个数据分开,34和26)
    风力:≤3级 至 4-5级
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiang_jiajia10
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-27 17:48:3510楼 得分:5
    顶大康的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuhan_dotnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-09-01 15:52:2211楼 得分:0
    顶下先```帮忙弄弄啊``大哥门```
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CaptainV
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-09-01 16:12:3612楼 得分:5
    你直接调用新浪的就好了。新浪首页也是这样做的。它里面有判断IP是哪里的
    <iframe width="150" height="20" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://news.sina.com.cn/iframe/2008/weather/jump_new.html"> </iframe>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuhan_dotnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-09-01 16:25:1513楼 得分:0
    @" <div\s+class=""City_Data"">\s* <h3>(? <riqi>.+?)\s+(? <city>.+?) </h3>\s* <p>(? <date>.+?) </p>[\s\S]+ <div\s+class=""Weather_TP"">(? <weat>.+?)\s+(? <TP1>.+?)℃~(? <TP2>.+?)℃ </div>\s* <div\s+class=""Weather_W"">&nbsp;风力:(? <Wind>.+?) </div>";

    我这个抓取3天的正则也不对哦``谁帮我改改啊``
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wszhoho
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-09-01 16:50:2614楼 得分:5
    C# code
    今日 (?<city>[^<]*).*<p>(?<date>[^<]+).*Weather_TP">(?<weather>[^<]+).*Weather_W">(?<wind>[^<]+)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lqscoke
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-09-01 16:53:5915楼 得分:5
    奇怪,干嘛这种东西要用正则弄,不是有对应的免费的WebServices,调用返回XML,再用XMLDocument处理一下不就好了``
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved