這裏介紹的爬蟲是抓取暴走漫畫上的GIF趣圖,方便離線觀看。爬蟲用的是python3開發環境,主要用到了urllib、request和BeautifulSoup模塊。(這裏主要介紹下urllib和BeautifulSoup這兩個比較重要的模塊)html
該模塊提供了從萬維網中獲取數據的高層接口,當咱們用urlopen()打開一個URL時,就至關於使用Python內設的open()打開一個文件。但不一樣的是,urlopen()接收一個URL做爲參數,而且操做的是socket,因此沒有辦法對打開的文件流進行seek操做,而Python內設的open()接收的是一個本地文件名。python
這個模塊能夠幫助你實現HTML和XML的解析,通常寫網頁爬蟲,步驟抓取網頁的html源碼等內容,而後分析,提取相應的內容。在分析內容時也能夠用正則表達式去匹配,只是若是解析的內容稍微複雜點就會很頭疼,使用BeautifulSoup模塊去實現分析html源碼的工做,就會變得十分簡單,極大地提升了分析html源碼的效率。正則表達式
1、經過模擬瀏覽器訪問網站網頁爬蟲
import urllib.request
import bs4,os
page_sum = 1 # 下載頁數設置,這裏使用頁數爲1
path = os.getcwd()
path = os.path.join(path,'暴走GIF文件夾')
if not os.path.exists(path):
os.mkdir(path) #建立文件夾
url = "http://baozoumanhua.com/gif/year" # 此處輸入的是暴走漫畫GIF網頁的url地址
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/32.0.1700.76 Safari/537.36'
}
複製代碼
2、經過爬蟲獲取圖片信息及信息的整理解析瀏覽器
for count in range(page_sum):
req = urllib.request.Request(
url = url+str(count+1),
headers = headers
)
print(req.full_url)
content = urllib.request.urlopen(req).read()
soup = bs4.BeautifulSoup(content) # BeautifulSoup
img_content = soup.findAll('img',attrs={'style':'width:460px'})
url_list = [img['src'] for img in img_content] # 列表推導 url
title_list = [img['alt'] for img in img_content] # 圖片名稱
複製代碼
3、圖片文件的格式化和圖片的下載python爬蟲
for i in range(url_list.__len__()) :
imgurl = url_list[i] # 經過迭代的方法獲取圖片的url
filename = path + os.sep +title_list[i] + ".gif" # 格式化命名GIF圖片文件
print(filename+":"+imgurl) #打印下載信息,便於觀察下載進度
urllib.request.urlretrieve(imgurl,filename) #下載圖片
複製代碼
將此文件保存爲pabaozougif.py,使用命令python pabaozougif.py運行後在同目錄下會生成「暴走GIF文件夾」的文件夾,全部的GIF圖片會自動下載保存到該目錄下。socket
print('Python學習羣')
# 908-382-745複製代碼