爬取桌面網
阿新 • • 發佈:2018-12-31
本人很喜歡高達,於是乎在網上找了高達的圖片
這個網站不讓右鍵儲存圖片,只能一張一張點開然後點下載
於是開始爬:
首先濾清思路
'''
1: 分析:圖片發現圖片在
https://up.enterdesk.com/edpic_source/87/9f/d0/879fd07ff61db705c7351a5e4feaa672.jpg
https://up.enterdesk.com/edpic_source/78/c5/64/78c564e2856a6c4b5d0b1823350918e7.jpg
https://up.enterdesk.com/edpic_source/3a/28/07/3a2807b5cf0de9f3ee0c33360965f477.jpg
所有的圖片都在https://up.enterdesk.com/edpic_source/xxxxxxxx中.jpg
2: 分析網頁:獲取圖片的url # 就他喵的10個圖片
3: 將獲取的url 放在列表中,迴圈列表,獲取相應給0.5秒反應時間,.獲取圖片存入在資料夾
'''
1:
通過觀察
可以得知圖片的url 的位置
先獲取響應:
利用re模組獲取
def get_urls(self,staus_url): #獲取url地址,引數提供基本網頁引數 res =requests.get(staus_url,headers =self.header) #獲取相應 piace_url =res.text panent =re.compile('<img src="(.*?)" title="機動戰士高達" /></a></div>',re.S) text =re.findall(panent,piace_url) self.get_url_list.append(text) l=self.clean_text(self.get_url_list) self.get_url_list =lreturn self.get_url_list
2:
下載每個圖片
def get_piace(self,num,url): res = requests.get(url,headers =self.header) connect =res.content with open('f:/piace/'+str(num)+'.jpg','wb') as f: f.write(connect) print('高達圖片'+str(num)+'寫入成功')
3:
得知有高清圖片後,分析網頁找到規律,清晰圖片
def clean_text(self,list): new_list =[] for url in list[0]: url =url.replace('edpic_360_360','edpic_source') new_list.append(url) return new_list
4:
儲存圖片
整體程式碼
# -*- coding: utf-8 -*- # @Time : 2018/12/31 16:29 # @Author : Endless-cloud # @Site : # @File : 爬取高達圖片.py # @Software: PyCharm import requests import re from bs4 import BeautifulSoup import time import os import _md5 ''' 1: 分析:圖片發現圖片在 https://up.enterdesk.com/edpic_source/87/9f/d0/879fd07ff61db705c7351a5e4feaa672.jpg https://up.enterdesk.com/edpic_source/78/c5/64/78c564e2856a6c4b5d0b1823350918e7.jpg https://up.enterdesk.com/edpic_source/3a/28/07/3a2807b5cf0de9f3ee0c33360965f477.jpg 所有的圖片都在https://up.enterdesk.com/edpic_source/xxxxxxxx中.jpg 2: 分析網頁:獲取圖片的url # 就他喵的10個圖片 3: 將獲取的url 放在列表中,迴圈列表,獲取相應給0.5秒反應時間,.獲取圖片存入在資料夾 檔名字以md5加密輸出 ''' class gaoda_speader(object): def __init__(self): #基本資訊 self.get_url_list =[] # 存放獲取到的url地址 self.header ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } self.num = len(self.get_url_list) #存放獲取到的圖片總數.以便於起名字 def get_urls(self,staus_url): #獲取url地址,引數提供基本網頁引數 res =requests.get(staus_url,headers =self.header) # 獲取相應 piace_url =res.text panent =re.compile('<img src="(.*?)" title="機動戰士高達" /></a></div>',re.S) text =re.findall(panent,piace_url) self.get_url_list.append(text) l=self.clean_text(self.get_url_list) self.get_url_list =l return self.get_url_list def clean_text(self,list): new_list =[] for url in list[0]: url =url.replace('edpic_360_360','edpic_source') new_list.append(url) return new_list def get_piace(self,num,url): res = requests.get(url,headers =self.header) connect =res.content with open('f:/piace/'+str(num)+'.jpg','wb') as f: f.write(connect) print('高達圖片'+str(num)+'寫入成功') def go_run(self): staus ='https://www.enterdesk.com/bizhi/4973-48230.html' self.get_urls(staus) # print(self.get_url_list) for i in self.get_url_list: self.get_piace(self.num,i) self.num+=1 if __name__ == '__main__': gaoda_speader=gaoda_speader() gaoda_speader.go_run() print('儲存成功')
圖片很大,最好用執行緒下載,等執行緒用的比較清晰後,在出執行緒版本(...大概用過幾次,..感覺不難.不過最好
jia上time模組,和ip代理,這樣可以 避免被封)