1. 程式人生 > >【Python3 爬蟲】爬取博客園首頁所有文章

【Python3 爬蟲】爬取博客園首頁所有文章

表達式 技術 標記 itl 1.0 headers wow64 ignore windows

首先,我們確定博客園首頁地址為:https://www.cnblogs.com/

我們打開可以看到有各種各樣的文章在首頁,如下圖:

技術分享圖片

我們以上圖標記的文章為例子吧!打開網頁源碼,搜索Docker,搜索結果如下圖:

技術分享圖片

從上圖後紅色標記部分可以看出,我們使用正則表達式即可匹配該網址,我們匹配到該網址之後,將該網址對應的內容下載到到底進行存儲。

實現代碼

import urllib.request
import re 
"""
爬取cnblogs首頁所有的文章
"""
url = "http://www.cnblogs.com/"
headers = ("User_Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0
") opener = urllib.request.build_opener() opener.addheaders = [headers] urllib.request.install_opener(opener) data = urllib.request.urlopen(url).read().decode("utf-8","ignore") #此處的(.*?)是匹配href後所有內容,直到”結束 rule = <h3><a class="titlelnk" href="(.*?)" result = re.compile(rule).findall(data)
for i in range(0,len(result)): file = "D:/source/"+str(i)+".html" urllib.request.urlretrieve(result[i],filename=file) print(""+str(i+1)+"次成功")

運行結果:

第1次成功
第2次成功
第3次成功
第4次成功
第5次成功
第6次成功
第7次成功
第8次成功
第9次成功
第10次成功
第11次成功
第12次成功
第13次成功
第14次成功
第15次成功
第16次成功
第17次成功
第18次成功
第19次成功
第20次成功
[Finished in 9.3s]

爬取完成後,我們可以在相應路徑下看到爬取後的內容

技術分享圖片

【Python3 爬蟲】爬取博客園首頁所有文章