Python爬蟲-換行的匹配

之前在學習爬蟲的時候遇到了匹配內容時發現存在換行,這時沒法匹配了,後來在網上找到了一種方法,當時懶得記錄,今天突然有遇到了這種情況,想想還是在這裏記錄一下吧。

 

當時爬取的時csdn首頁博客,如下圖

 

 

看了源代碼,發現如果使用<a href="....來爬取的話,這樣得到的會有許多其他的網址,並不全是我需要得博文,但是用<div class="title">去匹配後面的又出現了換行,但是換行匹配我又不會。。。。

re.compile()函數的一個標誌參數叫re.DOTALL,它可以讓正則表達式中的點(.)匹配包括換行符在內的任意字符。

pat = ' <div class="title">.*?<h2>.*?<a href="(.*?)" target="_blank"'   # 此時的.就可以匹配包括換行在內的任意字符
rst1 = re.compile(pat, re.DOTALL).findall(data)

 

 

 

import urllib.request
import re
url = "http://www.csdn.net/" data = urllib.request.urlopen(url).read().decode("utf-8") print(len(data)) pat = ' <div class="title">.*?<h2>.*?<a href="(.*?)" target="_blank"' rst1 = re.compile(pat, re.DOTALL).findall(data) print(len(rst1)) for i in range(0, len(rst1)): print(rst1[i]) data = urllib.request.urlopen(rst1[i]).read().decode("utf-8", "ignore") urllib.request.urlretrieve(rst1[i], "D:\\python\\studyPython\\爬蟲學習\\學習urllib\\blog\\"+str(i+1)+".html") print("爬取第:", i+1, "篇博客成功") print("首頁所有博客爬取結束")

 

 此時則爬取成功

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章