作者mark31731123 (mark31731123)
看板Python
标题[问题] 爬虫re.findall() 问题
时间Sun Oct 27 15:42:35 2019
各位好,小弟看了python的爬虫基础
要把网页的这段爬下来<title>Scraping tutorial 1 | 莫烦Python</title>
看了教学是用以下这段
res=re.findall(r"<title>(.+?)</title>",html)
print(res[0])
想问的是用r"" 这个用法里面为什麽不是用r"<title>[.+?]</title>"
而是用(.+?) ,搞不太懂()的意义,也搞不太懂有没有加?的差别
恳请各位大大解释
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.250.161 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1572162157.A.542.html
1F:推 penut85420: ()跟[]的用法是不一样的,例如[ABC]代表只要是ABC其 10/27 15:49
2F:→ penut85420: 中一个字就算有符合,()则是表示群组的意思。有加问 10/27 15:49
3F:→ penut85420: 号代表找最短的字串 10/27 15:49
4F:→ mark31731123: 群组的话不是应该用.group()的形式去print出来吗? 10/27 15:55
5F:→ mark31731123: 可是用这种方式却会跳error code 10/27 15:55
6F:推 penut85420: .group 跟 findall 其实还蛮类似的,有error可能是别 10/27 16:08
7F:→ penut85420: 的问题 10/27 16:08
8F:→ mark31731123: 而且为什麽是用res[0]的方式阿,代表网页是list? 10/27 16:13
9F:推 penut85420: 因为findall会将所有符合的情况以list回传,例如htm 10/27 16:17
10F:→ penut85420: l="<title>A</title><title>B</title><title>C</tit 10/27 16:17
11F:→ penut85420: le>", 那re.findall就会回传["A", "B", "C"] 10/27 16:17
12F:→ mark31731123: 感谢解答,原来会以list回传 10/27 16:27