黑马程序员技术交流社区
标题:
急!!! 正则表达式抓取指定的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