采集网页中的图片时,目标页面中的img列表格式有不同,怎么能全部采集到图片的地址。两种img标签的格式如下,请确保正则表达式都能采集到我加红的部分。
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH+A1BTQQAsAAAAAAEAAQAAAgJEAQA7" alt="Big Heads Soccer" width="200" height="120" class="thumbnail3 lazyLoad" onerror="javascript:if(this.src!='http://static3.spilcdn.com/tw/img/noimage.png') this.src='http://static3.spilcdn.com/tw/img/noimage.png'" data-src="http://static3.spilcdn.com/tw/200X120/3/1/154031/20130501085115_Big-Heads-Soccer.jpg" />....
<img src="http://static3.spilcdn.com/tw/200X120/8/5/153985/20130514112313_Wheely.jpg" alt="Wheely" width="200" height="120" class="thumbnail3" onerror="javascript:if(this.src!='http://static3.spilcdn.com/tw/img/noimage.png') this.src='http://static3.spilcdn.com/tw/img/noimage.png'" />....

解决方案 »

  1.   

    http://static3\.spilcdn\.com/tw/200X120/\d+/\d+/\d+/[A-Za-z0-9_]+?\.jpg
      

  2.   


    能否不从图片地址考虑,因为地址会变的,格式也可能是gif等。
      

  3.   

    如果你想分析html语法结构,那么就应该使用html语法分析工具。
      

  4.   


    当然。这个字符串完全可能写在别的属性中,或者InnerText中,而不是图片路径。
      

  5.   


    能否不从图片地址考虑,因为地址会变的,格式也可能是gif等。说白了,构造正则表达式就是构造一个你给出样本的“最小公倍数”。你给出的样本太少,你说什么会变,自己用通配符替换下好了。
    要支持别的类型,,按照如下修改
    http://static3\.spilcdn\.com/tw/200X120/\d+/\d+/\d+/[A-Za-z0-9_]+?\.(jpg|gif|png|bmp)
      

  6.   

    <img src="data:[\S\s]*? alt="(?<yxname>.*?)"[\S\s]*?data-src="(?<yxpicurl>.*?)"|<img src="(?<yxpicurl>.*?)" alt="(?<yxname>.*?)"[\S\s]*?(?!data-src)这个是我写的,不知道哪里错了
      

  7.   

    许多网页是相对动态的,它会根据属性的多少而动态输出不同样子的html。同时网页往往每隔几天就改版了。
      

  8.   


    大哥,这不是本帖讨论的范围,我只想先find实现这个功能的技术!
      

  9.   

    自己给自己结贴吧,测试出来了:(<img src="data:[\S\s]*? alt="(?<yxname>.*?)"[\S\s]*?data-src="(?<yxpicurl>.*?)"|<img src="(?!data)(?<yxpicurl>.*?)" alt="(?<yxname>.*?)")
      

  10.   

    嗯,估计你也没有可能实现别的功能。就你在问题中描述的代码而言.......那你就慢慢find吧。