我好像已经有点懂findall[0],后面的[0]是什么意思了,因为今天刚巧修改了各种错误,接下来通过代码讲解
网页源码:
<li id="1671" test="0" deg="0" >
<div class="lessonimg-box">
<a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">
<img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解">
<div class="lessonplay" style="opacity: 0;">
<i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i>
</div>
</a>
</div>
<div class="lesson-infor" style="height: 88px;">
<h2 class="lesson-info-h2"><a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">AFNetworking 2.x 网络解析详解</a></h2>
<p style="height: 0px; opacity: 0; display: none;">
本课程将会带领大家使用 iOS 开源库中排名第一的 AFNetworking 2.x 网络请求库,包括讲解基本的 GET、POST 请求的使用,文件(图片)上传,断点下载等知识。最后会分享 AFNetworking 2.x 设计精良的地方。
</p>
<div class="timeandicon">
<div class="cf">
<dl>
<dd class="mar-b8"><i class="time-icon"></i><em>6课时
55分钟</em>
</dd>
<dd class="zhongji">
<i class="xinhao-icon2"></i><em>中级</em>
</dd>
</dl>
<em class="learn-number">2313人学习</em>
</div>
<div class="cf">
<div class="lessonicon-box">
<a href="http://www.jikexueyuan.com/course/ios/">
<img width="16" src="http://a1.jikexueyuan.com/home/201411/04/3567/5457df3530e14.png" alt="ios" title="iOS" jktag="&posGP=101001&posArea=0002&posOper=2005&aCId=1671&posColumn=1671.1&aCCate=ios" >
</a>
</div>
</div>
</div>
</div>
</li>
可知:在标签对<li></li>中,有两对<div></div>标签
正则表达式:
def getinfo(self,eachclass):
div0 = re.search('(<div.*?</div>)',eachclass,re.S).group(0)
div2 = re.search('(<div.*?</div>)',eachclass,re.S).group(1)
div = re.findall('(<div.*?</div>)',eachclass,re.S)[0]
div1 = re.findall('(<div.*?</div>)',eachclass,re.S)[1]
print 'div:'+div
print 'div1:'+div1
print 'div0:'+div0
print 'div2:'+div2
输出:
div:<div class="lessonimg-box">
<a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">
<img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解">
<div class="lessonplay" style="opacity: 0;">
<i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i>
</div>
div1:<div class="lesson-infor" style="height: 88px;">
<h2 class="lesson-info-h2"><a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">AFNetworking 2.x 网络解析详解</a></h2>
<p style="height: 0px; opacity: 0; display: none;">
本课程将会带领大家使用 iOS 开源库中排名第一的 AFNetworking 2.x 网络请求库,包括讲解基本的 GET、POST 请求的使用,文件(图片)上传,断点下载等知识。最后会分享 AFNetworking 2.x 设计精良的地方。
</p>
<div class="timeandicon">
<div class="cf">
<dl>
<dd class="mar-b8"><i class="time-icon"></i><em>6课时
55分钟</em>
</dd>
<dd class="zhongji">
<i class="xinhao-icon2"></i><em>中级</em>
</dd>
</dl>
<em class="learn-number">2331人学习</em>
</div>
div0:<div class="lessonimg-box">
<a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">
<img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解">
<div class="lessonplay" style="opacity: 0;">
<i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i>
</div>
div2:<div class="lessonimg-box">
<a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">
<img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解">
<div class="lessonplay" style="opacity: 0;">
<i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i>
</div>
div0,div2属于search组
div,div1属于findall组
结果很明显,findall后的[0]和[1]就像是数组下标,而且能准确识别出所有的div标签对
然而,search并不能识别出所有的div标签对,而且group(0)和group(1)的结果相同,都只能识别出第一个div标签对
到这里,或许有人会想如果是group(2)呢?
我当然也尝试了,
div3 = re.search('(<div.*?</div>)',eachclass,re.S).group(2)
结果报错了,见插图
因此,建议多用findall