深夜,我用python爬取了整個鬥圖網站,不服來鬥

QQ、微信鬥圖總是鬥不過,索性直接來爬鬥圖網,我有整個網站的圖,不服來鬥。

廢話不多說,選取的網站為鬥圖啦,我們先簡單來看一下網站的結構

網頁信息

深夜,我用python爬取了整個鬥圖網站,不服來鬥

從上面這張圖我們可以看出,一頁有多套圖,這個時候我們就要想怎麼把每一套圖分開存放(後邊具體解釋)通過分析,所有信息在頁面中都可以拿到,我們就不考慮異步加載,那麼要考慮的就是分頁問題了,通過點擊不同的頁面,很容易看清楚分頁規則

深夜,我用python爬取了整個鬥圖網站,不服來鬥

很容易明白分頁URL的構造,圖片鏈接都在源碼中,就不做具體說明了明白了這個之後就可以去寫代碼抓圖片了

存圖片的思路

因為要把每一套圖存入一個文件夾中(os模塊),文件夾的命名我就以每一套圖的URL的最後的幾位數字命名,然後文件從文件路徑分隔出最後一個字段命名,具體看下邊的截圖。

深夜,我用python爬取了整個鬥圖網站,不服來鬥

這些搞明白之後,接下來就是代碼了(可以參考我的解析思路,只獲取了30頁作為測試)全部源碼

<code># -*- 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()
/<code>

結果

深夜,我用python爬取了整個鬥圖網站,不服來鬥

深夜,我用python爬取了整個鬥圖網站,不服來鬥

深夜,我用python爬取了整個鬥圖網站,不服來鬥

總結

總的來說,這個網站結構相對來說不是很複雜,大家可以參考一下,爬一些有趣的

原創作者:loading_miracle,原文鏈接:https://www.jianshu.com/p/88098728aafd

深夜,我用python爬取了整個鬥圖網站,不服來鬥

歡迎關注我的微信公眾號「碼農突圍」,分享Python、Java、大數據、機器學習、人工智能等技術,關注碼農技術提升•職場突圍•思維躍遷,20萬+碼農成長充電第一站,陪有夢想的你一起成長。


分享到:


相關文章: