我读了一篇文章关于抓取《国家气象局天气预报 3天》的文章,有几个不懂的地方,请高手指点,疑点已经在下文中标注了,请您看看,我会在线等文章地址在:(代码贴了太多所以给了地址,麻烦各位了)
http://blog.csdn.net/cg2002/archive/2006/12/08/1434390.aspx
我的疑点是以下地方:
            XmlElement objXmlCityList = objXml.CreateElement("citylist");            string partten = "\"(?<citycode>[0-9]{5,})\"";//****疑点1citycode是什么
            
                        string parttenCity = "3天预报&nbsp;&nbsp;&nbsp;(?<cityname>.*)</div>";//***疑点2,cityname是什么?Yesun.Edzh.BLL.Log.LogHelperService.WriteError("城市 : " + mcCity.Groups["cityname"].Value);//***中的Groups["cityname"].Value是从什么。

解决方案 »

  1.   

    看这个意思,应该是一个正则表达式,( string partten = "\"(?<citycode>[0-9]{5,})\"")
    <citycode>
    <cityname>
    都是xml文件的一个节点
      

  2.   

    maotin(liu)谢谢您,但是国家气象局天气预报中没有出现任何与它有关的代码,这篇文章又是怎么找到抓取点的呢?祝您新年快乐。
      

  3.   

    你最好看一些正则表达式的文章
    http://www.regexlab.com/zh/regref.htmstring partten = "\"(?<citycode>[0-9]{5,})\"";//
    表示取字符串中0-9数字,长度至少5位,并给它命名为citycode用法就是
    mcCity.Groups["citycode"].Value
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  4.   

    我曾经理解:if(Convert.ToInt32(mc.Groups["citycode"].Value) > 10000)是过滤条件,是为了找到市的区别号,并作为参数
      

  5.   

    string partten = "\"(?<citycode>[0-9]{5,})\"";中"(?<citycode>真是没看懂,请高人再指点一下
      

  6.   

    (?<citycode>...)是Regex Named Group地用法。把符合条件的字符串内容命名为citycode组,如果有多个Match的话还可以可以用mcCity.Groups["citycode"][i]访问每一个Capture。---------------------------------------------------------------
    http://pointlessly.blogspot.com
      

  7.   

    citycode和cityname都是抓取到的XML中会出现的有规律部分。通过用正则表达式去查找这部分特征,就能找到城市代号、名称这样的数据。例如你要处理大量这种格式的数据
    姓名:某某某
    性别:……
    那么你用正则表达式找出“姓名:”,后面的部分就是姓名的实际数据了。至于你的第三个问题,要看之前的代码如何初始化Groups的。你最好还是调试运行这个程序,一步一步跟踪它的变量变化,这样你才能理解每一步干了什么。