|

楼主 |
发表于 2020-3-1 20:39:42
|
显示全部楼层
- 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)
复制代码 |
|