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("首頁所有博客爬取結束")

 

 此時則爬取成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM