黑马程序员技术交流社区

标题: 急!!! 正则表达式抓取指定的html标签,正则生手求助! [打印本页]

作者: 符云爵    时间: 2012-6-26 11:50
标题: 急!!! 正则表达式抓取指定的html标签,正则生手求助!
本帖最后由 符云爵 于 2012-6-27 10:34 编辑

<li>         
<a href="#" title="" target="_blank">
<img src="" alt='' />
</a>
         //这里红色部分是我想抓取的内容
<h3><a href="#" title="" target="_blank"><strong></strong></a></h3>         
<p>查看:94844次</p>         
<p>日期:2011年11月01日</p>   

<p>模特:          <a href='#'></a>            </p>        
</li>   




在一个ul中,有多个上面那样重复的li,我想抓取每个li中红色部分的内容,急求正则表达式!
作者: 黑马罗坚    时间: 2012-6-26 15:01
"\\<li\\>\\<a.+\\>(\\<img .+\\</a\\>).*\\</li\\>      <>这个需不要转义我忘记了 不需要就去掉吧   在取组1就可以了
作者: 荣天    时间: 2012-6-26 21:26
{:soso_e156:}
作者: 符云爵    时间: 2012-6-27 10:32
nailsoul 发表于 2012-6-26 15:01
"\\\\(\\

非常感谢,昨天解决问题后忘了回复了,试了下你的,但抓不到红色部分,可能哪里还需修正,另外尖括号在java中应该是匹配html标签用的,不用转义。虽然不是我想要的答案,不过还是要感谢你的关注。

在做一个网络爬虫的后台,抓取指定网页上的图片列表,再抓取该列表中的子列表图片。 所以我想做的是抓取<img />标签的innerHTML,然后再取得src的值,不过能抓取上面问题的红色部分也可以截取得到需要的。看正则的相关文档以为一定要匹配结束标签,<img />又没有,所以加了个</a>。
我最终的解决方法是
1 直接抓取<img />的innerHTML  : (<img[\\w\\W].+?>)   取组0
2 抓取<img />标签中的src值     : <img\\s*.*\\s*(src=\\S*)\\s*.*>$  取组1,此时还包括src=",和最后的",这里做字符串截取就行了,因为抓取所有的<img />都共用这个方法,而指定网页中的<img />标签又存在很多不确定性,比如src有相对地址,也有绝对地址,等号后边有的单引号,有的双引号,最主要的是不能排除空格这种情况,正则就能解决这点。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2