昨天和女朋友斗圖輸了(無中生女友),被百般嘲諷,QQ、微信斗圖總是斗不過,索性直接來爬斗圖網,我有整個網站的圖,還有誰我斗不過?
話不多說,選取的網站為斗圖啦,我們先簡單來看一下網站的結構
網頁資訊
從上面這張圖我們可以看出,一頁有多套圖,這個時候我們就要想怎么把每一套圖分開存放(后邊具體解釋)
通過分析,所有資訊在頁面中都可以拿到,我們就不考慮異步加載,那么要考慮的就是分頁問題了,通過點擊不同的頁面,很容易看清楚分頁規則

很容易明白分頁URL的構造,圖片鏈接都在原始碼中,就不做具體說明了明白了這個之后就可以去寫代碼抓圖片了
存圖片的思路
因為要把每一套圖存入一個檔案夾中(os模塊),檔案夾的命名我就以每一套圖的URL的最后的幾位數字命名,然后檔案從檔案路徑分隔出最后一個欄位命名,具體看下邊的截圖,
這些搞明白之后,接下來就是代碼了(可以參考我的決議思路,只獲取了30頁作為測驗)全部原始碼
這里給大家分享一套系統教學資源 加一下我建的Python技術的學習裙;九三七六六七五零九,一起學習 # -*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import os class doutuSpider(object): headers = { "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"} def get_url(self,url): data = requests.get(url, headers=self.headers) soup = BeautifulSoup(data.content,'lxml') totals = soup.findAll("a", {"class": "list-group-item"}) for one in totals: sub_url = one.get('href') global path path = 'J:\\train\\image'+'\\'+sub_url.split('/')[-1] os.mkdir(path) try: self.get_img_url(sub_url) except: pass def get_img_url(self,url): data = requests.get(url,headers = self.headers) soup = BeautifulSoup(data.content, 'lxml') totals = soup.find_all('div',{'class':'artile_des'}) for one in totals: img = one.find('img') try: sub_url = img.get('src') except: pass finally: urls = 'http:' + sub_url try: self.get_img(urls) except: pass def get_img(self,url): filename = url.split('/')[-1] global path img_path = path+'\\'+filename img = requests.get(url,headers=self.headers) try: with open(img_path,'wb') as f: f.write(img.content) except: pass def create(self): for count in range(1, 31): url = 'https://www.doutula.com/article/list/?page={}'.format(count) print '開始下載第{}頁'.format(count) self.get_url(url) if __name__ == '__main__': doutu = doutuSpider() doutu.create()
結果
總結
總的來說,這個網站結構相對來說不是很復雜,大家可以參考一下,爬一些有趣的網站
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/125448.html
標籤:Python
上一篇:其他方式創建陣列
