参考博客:http://www.crifan.com/python_re_search_vs_re_findall/
在这里,我想说一下我目前遇到的问题
这是一个本地的文件 text.txt
<html>当我用re.findall()来获取它的文本内容,即
<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>
<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那样给定位置。
但是现在我不知道具体是什么情况时要这样写。希望哪位大神不吝赐教!