【一、項目背景】
你是否在尋找可以與高手鬥圖的應用? 你是否在尋找可以自制表情的應用?你是否在尋找最全、最爆笑的表情庫?
鬥圖網是一個收集了成千上萬的撕逼鬥圖表情包,在這裏你可以快速找到想要的表情, 更好的“鬥圖”,助您成爲真正的鬥圖終結者!
【二、項目目標】
下載表情包,保存文檔。
【三、涉及的庫和網站】
1、網址如下:
https://www.doutula.com/photo/list/?page={}
2、涉及的庫:requests****、lxml、ssl****、time
3、軟件:PyCharm
【四、項目分析】
1、如何找到表情包圖片地址?
F12右鍵檢查,找到對應的圖片的地址。
觀察網址的變化(一般取前三頁):
https://www.doutula.com/photo/list/?page=1
https://www.doutula.com/photo/list/?page=2
https://www.doutula.com/photo/list/?page=3
發現點擊下一頁時,page{}每增加一頁自增加1,用{}代替變換的變量,再用for循環遍歷這網址,實現多個網址請求。
2. 如何解除ssl驗證?
因爲這個網址是https,需要導入一個ssl模塊,忽略ssl驗證。
3. ****如何獲取Cookie?
右鍵檢查,找到NetWork,隨便複製一個Cookie即可。
【五、項目實施】
1、我們定義一個class類繼承object,然後定義init方法繼承self,再定義一個主函數main繼承self。導入需要的庫。
import requests
from lxml import etree
from fake_useragent import UserAgent
import ssl # ssl驗證
import time
ssl._create_default_https_context = ssl._create_unverified_context
class Emoticon(object):
def __init__(self):
pass
def main(self):
pass
if __name__ == '__main__':
spider = Emoticon()
spider.main()
2、導入網址和構造請求頭,防止反爬。
def __init__(self):
self.headers = {'User-Agent': 'Mozilla/5.0'}
self.url = 'https://www.doutula.com/photo/list/?page={}'
3、發送請求 ,獲取響應,頁面回調,方便下次請求。
def get_page(self, url):
res = requests.get(url=url, headers=self.headers)
html = res.content.decode("utf-8")
return html
4、xpath解析頁面。
這裏我們先獲取父節點,在通過for循環遍歷,找到對應的子節點(圖片地址)。
image = parse_html.xpath('//ul[@class="list-group"]/li/div/div//a')
for i in image:
image_src_list = i.xpath('.//img/@data-original')[0]
image_name = i.xpath('.//img//@alt')[0]
運行的結果:
5、對圖片地址發生請求,取對應圖片地址後10位,作爲圖片的命名,寫入文件(每一張圖片的後綴名不一樣,所有這裏不採用image_name作爲圖片的命名)。
html2 = requests.get(url=image_src_list, headers=self.headers).content
name = "/圖/" + image_src_list[-20:]
#print(name[-10:])
with open(name[-10:], 'wb') as f:
f.write(html2)
print("%s 【下載成功!!!!】" % image_name)
print("==================================")
6、調用方法,實現功能。
html = self.get_page(url)
self.parse_page(html)
print("======================第%s頁爬取成功!!!!=======================" % page)
7、time模塊打出執行時間。
start = time.time()
end = time.time()
print('執行時間:%.2f' % (end - start))
【六、效果展示】
1、點擊綠色小三角運行輸入起始頁,終止頁。
2、將下載成功信息顯示在控制檯。
3、保存文檔,在本地可以看到鬥圖。
【七、總結】
1、不建議抓取太多數據,容易對服務器造成負載,淺嘗輒止即可。
2、本文基於Python網絡爬蟲,利用爬蟲庫,獲取表情包,存入文檔。
3、希望通過這個項目能夠了解到,對於HTTPS網站,解除ssl驗證的有大致的瞭解。
4、可以嘗試的去爬取其他的分類的表情包,按照步驟去實現,實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,纔可以理解的更加深刻。
5、需要本文源碼的小夥伴,後臺回覆“鬥圖達人”四個字,即可獲取。
想要學習更多,請前往Python爬蟲與數據挖掘專用網站:http://pdcfighting.com/