女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!

現在和妹子聊天,沒有表情包也會被嫌棄了麼?

女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!

那為了能和妹子更愉快的聊天,咱們爬他個天昏地暗的表情包

準備

環境:Windows + Python3.6

模塊:

1 import requests # 請求網頁2 3 from lxml import etree # 解析網頁4 5 from urllib import request # 下載內容6 7 import os # 系統包

Python爬蟲常規三步俗稱:“爬蟲三板斧”

第一斧:抓取目標網頁

  1. 簡單的反爬蟲機制
  2. 獲取服務器響應,獲取請求響應的狀態碼
  3. 從響應裡提取出網頁,獲取整個網頁
  4. 將抓取的網頁作為參數返回

1 def parse_page(url): 2 # 2.1簡單的反爬蟲機制 3 HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'} 4 # 2.2獲取服務器響應 5 # 獲取請求響應的狀態碼 6 response = requests.get(url, headers=HEADERS) 7 # 2.3 從響應裡提取出網頁 8 # 獲取整個網頁 9 text = response.text10 # 將抓取的網頁作為參數返回11 return text

第二斧:解析網頁獲取數據

  1. 將網頁保存在HTML對象裡
  2. 從網頁對象根據一定的規則提取數據
  3. 根據URL的規則對URL進行循環,獲取多頁URL,並傳給parse_page()進行抓取數據
  4. 對列表裡的img對象進行提取
  5. try.... except 對程序進行異常處理,避免因為其他原因報錯
  6. 獲取所有表情的URL並保存在列表裡
  7. 從列表裡提取出表情的URL,至於為啥不取零,列表中有空值,取零報錯
  8. 對錶情的URL進行處理,提取出表情圖片的格式,用於組成表情的名字
  9. 獲取表情的名字
  10. alt = re.sub(r'[,。??,/\·]','',alt) #利用正則表達式對錶情名字中存在的特殊字符進行處理
  11. 用 alt+suffix組成表情的新名字

1 def main(): 2 # 根據URL的規則對URL進行循環,獲取多頁URL,並傳給parse_page()進行抓取數據 3 # for x in range(1, 11): 5 url = "http://www.doutula.com/photo/list/?page=%d" % x 6 # 調用parse_page()函數並把url給進去 7 text=parse_page(url) 8 # 接收parse_page()返回的網頁,並傳給page_list()函數進行解析 9 imgs = page_list(text)10 # 3.3 對列表裡的img對象進行提取11 for img in imgs:12 # try.... except 對程序進行異常處理,避免因為其他原因報錯13 try:14 # 3.4獲取所有表情的URL並保存在列表裡15 imgurl = img.xpath(".//@data-original")16 # 3.5從列表裡提取出表情的URL,至於為啥不取零,列表中有空值,取零報錯17 for img_url in imgurl:18 # print(img_url)19 # 分割後綴名:.jpg .png20 # 3.6對錶情的URL進行處理,提取出表情圖片的格式,用於組成表情的名字21 suffix = os.path.splitext(img_url)[1]22 suffix = suffix.split("!")[0]23 24 # 3.7獲取表情的名字25 alt = img.xpath(".//@alt")[0]26 # alt = re.sub(r'[,。??,/\\·]','',alt) #利用正則表達式對錶情名字中存在的特殊字符進行處理27 # 3.8用 alt+suffix組成表情的新名字28 img_name = alt + suffix

第三斧:批量下載

使用request.urlretrieve()對錶情進行下載並保存在images文件裡

1 # 使用request.urlretrieve()對錶情進行下載並保存在images文件裡 2 #3 request.urlretrieve(img_url, 'images/' + img_name) 4 # 打印出那些表情已經下載 5 print(img_name + '下載完畢!') 6 7 except: 8 print("表情報錯") 9 10 # 執行函數11 if __name__ == '__main__':12 main()

女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!

女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!

所以Python爬蟲的“三板斧”你瞭解了嗎,是不是感覺到“三板斧”的強大!哈哈哈

女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!

女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!

女神聊天喜歡發表情,總說我不懂風趣 可惜她忘了我是做什麼的!


分享到:


相關文章: