参考博客:http://www.crifan.com/python_re_search_vs_re_findall/
在这里,我想说一下我目前遇到的问题
这是一个本地的文件 text.txt
<html> <head> <title>极客学院爬虫测试</title> </head> <body> <div class="topic"><a href="http://jikexueyuan.com/welcome.html">欢迎参加《Python定向爬虫入门课程》</a> <div class="list"> <ul> <li><a href="http://jikexueyuan.com/1.html">这是第一条</a></li> <li><a href="http://jikexueyuan.com/2.html">这是第二条</a></li> <li><a href="http://jikexueyuan.com/3.html">这是第三条</a></li> </ul> </div> </div> </body> </html>
当我用re.findall()来获取它的文本内容,即
<li><a href="http://jikexueyuan.com/1.html">这是第一条</a></li>
中<a>标签直接的内容时,用了如下代码,采用先打后小原则:
<pre name="code" class="python">text_field = re.findall('<ul>(.*?)</ul>',html,re.S)
text = re.findall(‘">(.*?)</a></li>‘,text_field,re.S)for each in text: print each
应该没问题的,但是报了这样的错
很无解,后来尝试了
1.
text_field = re.findall('<ul>(.*?)</ul>',html,re.S)[0]
2.
text_field = re.search('<ul>(.*?)</ul>',html,re.S).group(1)<pre style="font-family: Consolas; font-size: 10.5pt; background-color: rgb(255, 255, 255);">这两种方式都正确
但是我并不懂。后来看到开头那篇博客的最后提到的,我很有同感。此时,我猜想,当findall得到的元素是一个元组,但是这个元组仅有一个时,需要像search那样给定位置。
但是现在我不知道具体是什么情况时要这样写。希望哪位大神不吝赐教!
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-10 09:49:12