(爬)搜狗壁紙批量下載

 搜狗壁紙批量下載

觀察搜狗網站型態


首頁如下
按下"壁紙"

接下來觀察可用資源的規律,操作請看視頻





裡面其中抓動態加載時有改變的地方,例如:
'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category\
=%E5%A3%81%E7%BA%B8&tag=%E7%BE%8E%E5%A5%B3&start=0&len=15'

第一次加載是start=0,下拉後加載start=45,再下拉加載start=97....,加載的變數有點不規律,
但後面有一個len=15,試試看更改數量會不會跑出更多的更多的訊息.....,結果如此,那len
之後的數字就用str()放入變數來代。

程式碼解說

首先須匯入以下的庫

import requests, json
from fake_useragent import UserAgent

為了以後可以重覆使用,使用繼承的模型

class classname():
    def __init__(self):
        pass
    def test(self):
        pass

然後用隨機生成的UserAgent,防反爬

def __init__(self):
        ua=UserAgent(verify_ssl=False)
        for i in range(150):
            self.headers={'User-Agent':ua.random,}


以下這個def主要是在解析json網頁裡要抓取的imgs,一個個抓下來存放在設製的
資料夾裡,並用號碼累計命名成jpg檔。

def imgsGet(selfi):
        url='https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+\
            '%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(i)
        htmlfile=requests.get(url, headers=self.headers)
        jd=json.loads(htmlfile.text)
        jd=jd['all_items']
        savePath=r'D:\暫存'
        n=0
        for img in jd:
            imgsUrl=img['ori_pic_url']
            pic=requests.get(imgsUrl, headers=self.headers).content
            with open(savePath+'\\'+str(n).zfill(3)+'.jpg''wb'as f:
                f.write(pic)
            n+=1
            print("%s下載完成"%str(n).zfill(3)+'.jpg')


完整的程式碼如下:

import requests, json
from fake_useragent import UserAgent

class shougu():
    def __init__(self):
        ua=UserAgent(verify_ssl=False)
        for i in range(150):
            self.headers={'User-Agent':ua.random,}
    def imgsGet(selfi):
        url='https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+\
            '%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(i)
        htmlfile=requests.get(url, headers=self.headers)
        jd=json.loads(htmlfile.text)
        jd=jd['all_items']
        savePath=r'D:\暫存'
        n=0
        for img in jd:
            imgsUrl=img['ori_pic_url']
            pic=requests.get(imgsUrl, headers=self.headers).content
            with open(savePath+'\\'+str(n).zfill(3)+'.jpg''wb'as f:
                f.write(pic)
            n+=1
            print("%s下載完成"%str(n).zfill(3)+'.jpg')

if __name__=='__main__':
    SG=shougu()
    a=SG.imgsGet(50#跨號裡可以改變自己想下載圖片的張數
    print(a)

正在下載中



留言

這個網誌中的熱門文章

(爬)微信公眾號上的圖片下載

(爬)康是美門市查詢並轉存csv