[问题] 爬虫re.findall() 问题

楼主: mark31731123 (mark31731123)   2019-10-27 15:42:35
各位好,小弟看了python的爬虫基础
要把网页的这段爬下来<title>Scraping tutorial 1 | 莫烦Python</title>
看了教学是用以下这段
res=re.findall(r"<title>(.+?)</title>",html)
print(res[0])
想问的是用r"" 这个用法里面为什么不是用r"<title>[.+?]</title>"
而是用(.+?) ,搞不太懂()的意义,也搞不太懂有没有加?的差别
恳请各位大大解释
作者: penut85420 (PenutGGorz)   2019-10-27 15:49:00
()跟[]的用法是不一样的,例如[ABC]代表只要是ABC其中一个字就算有符合,()则是表示群组的意思。有加问号代表找最短的字串
楼主: mark31731123 (mark31731123)   2019-10-27 15:55:00
群组的话不是应该用.group()的形式去print出来吗?可是用这种方式却会跳error code
作者: penut85420 (PenutGGorz)   2019-10-27 16:08:00
.group 跟 findall 其实还蛮类似的,有error可能是别的问题
楼主: mark31731123 (mark31731123)   2019-10-27 16:13:00
而且为什么是用res[0]的方式阿,代表网页是list?
作者: penut85420 (PenutGGorz)   2019-10-27 16:17:00
因为findall会将所有符合的情况以list回传,例如html="<title>A</title><title>B</title><title>C</title>", 那re.findall就会回传["A", "B", "C"]
楼主: mark31731123 (mark31731123)   2019-10-27 16:27:00
感谢解答,原来会以list回传

Links booklink

Contact Us: admin [ a t ] ucptt.com