1. 程式人生 > >爬取桌面網

爬取桌面網

 

本人很喜歡高達,於是乎在網上找了高達的圖片

 

這個網站不讓右鍵儲存圖片,只能一張一張點開然後點下載

於是開始爬:

首先濾清思路

 

'''
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 =l
return 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代理,這樣可以 避免被封)