看板 Python 關於我們 聯絡資訊
各位好,小弟看了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://www.ptt.cc/bbs/Python/M.1572162157.A.542.html
penut85420: ()跟[]的用法是不一樣的,例如[ABC]代表只要是ABC其 10/27 15:49
penut85420: 中一個字就算有符合,()則是表示群組的意思。有加問 10/27 15:49
penut85420: 號代表找最短的字串 10/27 15:49
mark31731123: 群組的話不是應該用.group()的形式去print出來嗎? 10/27 15:55
mark31731123: 可是用這種方式卻會跳error code 10/27 15:55
penut85420: .group 跟 findall 其實還蠻類似的,有error可能是別 10/27 16:08
penut85420: 的問題 10/27 16:08
mark31731123: 而且為什麼是用res[0]的方式阿,代表網頁是list? 10/27 16:13
penut85420: 因為findall會將所有符合的情況以list回傳,例如htm 10/27 16:17
penut85420: l="<title>A</title><title>B</title><title>C</tit 10/27 16:17
penut85420: le>", 那re.findall就會回傳["A", "B", "C"] 10/27 16:17
mark31731123: 感謝解答,原來會以list回傳 10/27 16:27