介绍
捣鼓一上午,无聊写的,可以批量爬取堆糖壁纸图片,可自定义设置爬取页数。
需要导入两个模块,懂python都应该怎么导入吧,我就不详细说了,图片保存路径自定义是D:/image/
需要更改自己设置昂
站点:https://www.duitang.com/
效果
{/card-list-item}
所需库
import jsonpath #需要自己导入
import requests #需要自己导入
import os #自带库,无需导入
import json #自带库,无需导入
知识点
总结收获,所学习模块用法
1. 模拟浏览器请求资源
data = requests.get(url).text
2. 解析网页
因为是json文件,所以直接用jsonpath工具提取数据
html = json.loads(data)
photo = jsonpath.jsonpath(html,"$..path")
print(photo)
3. 保存
代码
import json
import jsonpath
import requests
import os
title =1
msg =input('输入你要爬取的内容>>>:')
if not os.path.exists(f'D:/image/'):
os.mkdir((f'D:/image/'))
#判断是否有这个文件夹,没有则新建文件夹
for page in range(0,30): #这里自定义爬取页数
url =f'https://www.duitang.com/napi/blog/list/by_search/?kw={msg}&start={page *24}'
#爬取urk
headers={
'cookie': 'js=1; _fromcat=category; Hm_lvt_d8276dcc8bdfef6bb9d5bc9e3bcfcaf4=1679106257; sessionid=de7b2587-5983-4322-86f0-ad422aae708d; _ga=GA1.2.1889637025.1680273718; _gid=GA1.2.1427858810.1680273718; Qs_lvt_476474=1679106283%2C1680273734; Qs_pv_476474=948869643746533400%2C3265479778410258000%2C1108286496701228700%2C2054902633385626000%2C2214954563826732300; Hm_lpvt_d8276dcc8bdfef6bb9d5bc9e3bcfcaf4=1680276955',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.54'
}
print(f'\n================开始爬取第{[page]}页{[msg]}图片================\n',)
res =requests.get(url=url,headers=headers).text
html =json.loads(res) #json.loads解析
img =jsonpath.jsonpath(html,"$..path") #jsonpath取值,比键值对取值更简洁
name =jsonpath.jsonpath(html,"$..msg")[0] #取图片昵称
for i in img:
print(name+str(title),i) #图片名称跟序号拼接
data =requests.get(url=i,headers=headers)
with open(f'D:/image/{name+str(title)}'+'.png',mode='wb')as f:
# 图片保存路径,需要自己更改
f.write(data.content)
title+=1
print('\n\n共爬取:',title-1,'张')
print('\n==============下载完毕!!!==============')
评论 (0)