關於python正則表示式中匹配分組的問題
阿新 • • 發佈:2018-11-16
在爬取網頁資訊時,我們不妨會用到Python正則表示式。之前一直沒有太明白關於正則表示式匹配分組的問題,今天終於搞清楚了,所以特意寫一下讓自己印象深刻。
myPage = requests.get(url).content.decode("gbk")
通過requests我們在網頁得到了這樣的html程式碼
我想對下面這一句通過正則表示式進行提取它的資訊
使用正則表示式
mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>.*?</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)
請注意上式的括號!
此時只有一個括號,最後我們只得到了一個匹配分組
可以看到得到了一個元素僅僅為網址的list,這是因為剛剛括號括到的地方只有網址,代表我們只有一個匹配分組。
這時我們將程式碼改寫為
mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>(.*?)</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)
仔細看的話會發現我在<h2>後面加上了括號,我在“移動
得到的結果是
可以看到現在我們得到的list,內部的元素已經變為了一個tuple。通過這個例子,應該就能說明這個正則表示式中這個“括號”的作用了。