• 天气数据一把抓。


       今天一位兄弟问了一个关于数据抓取的问题,刚好以前写过一个简单的天气预报的数据抓取功能。毕竟找一个免费的天气服务真实太不容易了,又不想花钱买,抓取吧!方便、简单!

           数据抓取主要是涉及到两方面的知识:

      1、正则就不说了,用多了也就熟练了。

      2、模拟登录 似很难,其实很简单,当然是只抓取一些公共的信息,如果有登录验证,也就不简单了。我今天也是说说简单的数据抓取功能,专取天气预报的数据。

      直接贴出代码吧,因为真是没什么可讲的,就是个知道与不知道的问题。告诉你,你就知道了。

      

    /// <summary>
        
    /// 得到天气数据
        
    /// </summary>
        
    /// <returns>数组(0、天气;1、气温;2、风力;3、紫外线;4、空气)</returns>

        public static string[] GetWeather()
        
    {
            Regex regex;
           
            
    string[] weather = new string[5];
            
    string content = "";
            
            Match mcTmp;
            Match mcCity;
            
    int k = 1;

            HttpWebResponse theResponse;
            WebRequest theRequest;


            theRequest 
    = WebRequest.Create("http://weather.news.qq.com/inc/ss82.htm");
            
    try
            
    {
                theResponse 
    = (HttpWebResponse)theRequest.GetResponse();

                
    using (System.IO.Stream sm = theResponse.GetResponseStream())
                
    {
                    System.IO.StreamReader read 
    = new System.IO.StreamReader(sm, Encoding.Default);
                    content 
    = read.ReadToEnd();
                }

            }

            
    catch (Exception)
            
    {
                content 
    = "";
            }

         

            
    string parttenTmp = "<td height=\"23\" width=\"117\" background=\"/images/r_tembg5.gif\" align=\"center\">(?<item1>[^<]+)</td>";
            k 
    = 1;
            regex 
    = new Regex(parttenTmp, RegexOptions.Compiled | RegexOptions.IgnoreCase);
            
    for (mcTmp = regex.Match(content), k = 1; mcTmp.Success; mcTmp = mcTmp.NextMatch(), k++)
            
    {

                weather[
    0= mcTmp.Groups["item1"].Value;
            }

            parttenTmp 
    = "height=\"23\" align=\"center\">(?<item1>[^/]+)</td>";
            k 
    = 1;
            regex 
    = new Regex(parttenTmp, RegexOptions.Compiled | RegexOptions.IgnoreCase);
            
    for (mcTmp = regex.Match(content), k = 1; mcTmp.Success; mcTmp = mcTmp.NextMatch(), k++)
            
    {
                weather[k] 
    = mcTmp.Groups["item1"].Value;
            }

            
    return weather;
        }

      看过上面的代码,应该明白了一些吧。只是路在那的问题,谁不会走路呢?这些只是简单的应用,数据抓取其实在很多的行业都会用到,举个简单的例子:搜索。搜索就是数据抓取的极端,当然数据抓取只是爬虫机器人的一小部分技术。就说到这把,下班喽!

    作者:邢少
    关于作者:从业至今一直从事软件前沿的分析设计工作,对软件开发过程、项目管理有浓厚的兴趣。如有想法、建议,请多多赐教
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过 xingshaoxian@163.com 与我联系,非常感谢。
  • 相关阅读:
    Elispse快捷键
    cannot connect to daemon at tcp:5037: cannot connect to 127.0.0.1:5037: 由于目标计算机积极拒绝,无法连接。 (10061)
    android studio如何连接夜神模拟器
    Default Activity Not Found解决方法
    Android ANR log trace日志文件分析
    使用trace文件分析ANR
    ANR日志分析
    并发容器
    git上tag的一些操作
    final关键字与不变性
  • 原文地址:https://www.cnblogs.com/xingshao/p/1590806.html
Copyright © 2020-2023  润新知