(爬)搜狗壁紙批量下載
搜狗壁紙批量下載
觀察搜狗網站型態
首頁如下
按下"壁紙"
'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(1, 50):
self.headers={'User-Agent':ua.random,}
以下這個def主要是在解析json網頁裡要抓取的imgs,一個個抓下來存放在設製的
資料夾裡,並用號碼累計命名成jpg檔。
def imgsGet(self, i):
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(1, 50):
self.headers={'User-Agent':ua.random,}
def imgsGet(self, i):
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)


留言
張貼留言