import requests
import json
i=0
pin="237967229" #起始pin 需要F12自己慢慢发现
while True:
params={
"k78u7sws": "",
"max": pin,
"limit": "20",
"wfl": "1"
}
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36",
"X-Request": "JSON", #这里困扰了我好久好久,具体为,明明服务器返回的是json数据,可是我get到的就是主页那点静态代码
"X-Requested-With": "XMLHttpRequest"} #后来我加了这两个参数,也不知道哪个起了作用,能接到json数据了
url="https://huaban.com/explore/shuixiasheying" #网站有很多系列,我这里选择了水下摄影子页面
response=requests.get(url=url,params=params,headers=headers) #get方式 需要传参一定是params
jsondata=(response.json()) #注意,我在这里卡顿了很久很久,因为接不到json数据 你直接这样用 会报错
if len(jsondata["pins"])<=0:break #瀑布流 鼠标拉到最下端 没有新的图片了,pins长度为0 结束循环
for x in range(len(jsondata["pins"])):
imgurl="https://hbimg.huabanimg.com/"+jsondata["pins"][x]["file"]["key"] #这个jsondata["pins"][x]["file"]["key"] 狠关键,所有分析,都是为了寻找这个key 图片的原型
i+=1
imgcontent=requests.get(imgurl)
with open(r'/pic/水下摄影/'+jsondata["pins"][x]["file"]["key"]+",jpg", 'wb') as file:
print("正在下载第%d张图片,文件名为%s"%(i,jsondata["pins"][x]["file"]["key"]))
file.write(imgcontent.content)
pin= jsondata["pins"][-1]["pin_id"] #构建下次循环(也就是下一页)
print("水下摄影共有%d张图片被下载"%i)
|