[問題] 爬蟲re.findall() 問題

看板Python作者 (mark31731123)時間4年前 (2019/10/27 15:42), 編輯推噓3(309)
留言12則, 2人參與, 4年前最新討論串1/1
各位好,小弟看了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

10/27 15:49, 4年前 , 1F
()跟[]的用法是不一樣的,例如[ABC]代表只要是ABC其
10/27 15:49, 1F

10/27 15:49, 4年前 , 2F
中一個字就算有符合,()則是表示群組的意思。有加問
10/27 15:49, 2F

10/27 15:49, 4年前 , 3F
號代表找最短的字串
10/27 15:49, 3F

10/27 15:55, 4年前 , 4F
群組的話不是應該用.group()的形式去print出來嗎?
10/27 15:55, 4F

10/27 15:55, 4年前 , 5F
可是用這種方式卻會跳error code
10/27 15:55, 5F

10/27 16:08, 4年前 , 6F
.group 跟 findall 其實還蠻類似的,有error可能是別
10/27 16:08, 6F

10/27 16:08, 4年前 , 7F
的問題
10/27 16:08, 7F

10/27 16:13, 4年前 , 8F
而且為什麼是用res[0]的方式阿,代表網頁是list?
10/27 16:13, 8F

10/27 16:17, 4年前 , 9F
因為findall會將所有符合的情況以list回傳,例如htm
10/27 16:17, 9F

10/27 16:17, 4年前 , 10F
l="<title>A</title><title>B</title><title>C</tit
10/27 16:17, 10F

10/27 16:17, 4年前 , 11F
le>", 那re.findall就會回傳["A", "B", "C"]
10/27 16:17, 11F

10/27 16:27, 4年前 , 12F
感謝解答,原來會以list回傳
10/27 16:27, 12F
文章代碼(AID): #1TjKfjL2 (Python)