作者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/m.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