python妹子圖爬蟲5千張高清大圖突破防盜鏈福利5千張福利高清大圖
阿新 • • 發佈:2019-04-06
服務 usr 繞過 盜鏈 ext 思路 推薦 class h+
meizitu-spider
python通用爬蟲-繞過防盜鏈爬取妹子圖
這是一只小巧方便,強大的爬蟲,由python編寫
所需的庫有
- requests
- BeautifulSoup
- os
- lxml
偽裝成chrome瀏覽器,並加上referer請求頭訪問服務器不會被拒絕。
完整項目放在GitHub:https://github.com/Ymy214/meizitu-spider
具體實現思路:
- 分析網頁源代碼結構
- 找到合適的入口
- 循環爬取並去重加到循環隊列
- 基本上實現了爬取所有圖片
代碼思路/程序流程:
我通過觀察發現meizitu網站的分布結構雖然找不到切入口但是其結構每一個頁面都會展示一個main-image主圖,並且頁面下面都會有推薦 這個板塊,所以就i昂到了利用從一個頁面當作入口,利用beautifulsoup或者pyquery分析HTML頁面提取出推薦的其他頁面,添加到循環訪問隊列,整體程序最外蹭利用while循環控制結構,循環不重復地遍歷隊列裏面的url頁面,每個頁面都只保存一個作為展示的主圖這樣就循環下去程序不停歇地運行也可以放到服務器上面爬取,順便上傳到網盤分享給廣大--你懂的
下面是功能以及效果展示
整體展示
爬取效果展示-豐功偉績
爬取效果展示-碩果累累
定制請求頭
代碼展示
python源代碼如下
#!/usr/bin/env python # -*- encoding: utf-8 -*- import requests from bs4 import BeautifulSoup # 定制請求頭 headers = {'Referer':'https://www.mzitu.com','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3679.0 Safari/537.36'} path = 'R:/python123全國等考/meizitu/' meizi_url = [] meizitu_img = [] start_url = 'https://www.mzitu.com/177007' meizi_url.append(start_url) r = requests.get(start_url) soup = BeautifulSoup(r.text) main_img = soup.find('div', 'main-image').img.get('src') meizitu_img.append(main_img) guess_like = soup.find('dl', 'widgets_like').find_all('a') for a in guess_like: meizi_url.append(a.get('href')) # 刪除起始引導url # del meizi_url[0] # print(meizi_url) # print(meizitu_img) with open("R:/python123全國等考/meizitu/meizi-main-jpg.txt", "w") as fo: x = 1 y = 1 for node_url in meizi_url: r = requests.get(node_url) soup = BeautifulSoup(r.text) main_img = soup.find('div', 'main-image').img.get('src') # 添加到文件日誌並下載主圖 if main_img not in meizitu_img: x += 1 meizitu_img.append(main_img) # 寫入日誌 fo.write(main_img+'\n') # 下載主圖 res = requests.get(main_img, headers=headers) if res.status_code == 200: with open(path+str(x)+'-'+str(y)+'.jpg', 'wb') as f: f.write(res.content) print('成功保存圖片') # 猜你喜歡,跳轉其他頁面 guess_like = soup.find('dl', 'widgets_like').find_all('a') for a in guess_like: like = a.get('href') # 添加推薦頁面 if like not in meizi_url: y += 1 meizi_url.append(like)
另外本人還有面下給小白的
- 王者榮耀皮膚高清大圖
背景故事爬蟲
歡迎學習支持
有用或幫到你的話不妨點個star我將感激不盡
python妹子圖爬蟲5千張高清大圖突破防盜鏈福利5千張福利高清大圖