目录
1.抓包确认数据接口位置
1.1,抓包,点击接口查看里面的数据,找到图片所在的接口
1.2,点击headers(请求头)找到url
2.构建单个页面请求
2.1,构建单个请求,看一下能抓到我们需要的数据嘛(成功)
3.抓取图片
3.1,我们要抓取多个页面的数据,进行url分析,看一下url有规律没,通过分析发现只有last_id这个参数在变化,每次变化都是加载一个新的页面
3.2,构建多页面抓取图片,接收用户输入的角色名称(成功)
3.3,分析页面发现有一些攻略图片和一些心得图片以及一些违规图片无法显示,我们不需要,所以我们需要加一些过滤条件
3.4,下载图片,完成
4.源代码
4.1,代码展示
import requests
import re
import os
def get():
# 共20页
# keyword=搜索的值
names = input('请输入需要搜索的角色名:')
ids = 0
while True:
ids += 1
url = f'https://bbs-api.miyoushe.com/post/wapi/searchPosts?gids=2&keyword={names}图片&last_id={ids}&size=20'
data = requests.get(url=url)
for i in range(20):
try:
bz = data.json()['data']['posts'][i]['topics'][0]['name']
urls = data.json()['data']['posts'][i]['image_list']
if re.match('.*?攻略', bz) or re.match('.*?指南',bz) or re.match('.*?心得',bz) or bz == '祈愿分享':
continue
else:
for j in range(len(urls)):
url = urls[j]['url']
name = url[60:92]
if len(url) != 40:
# print(url,bz)
r = requests.get(url)
with open(f'./ys_tp/{name}.png', 'wb') as f:
f.write(r.content)
print(f'{name} 下载完成')
if r == None:
bz = 'False'
return bz
except Exception as e:
print(e)
continue
if bz == 'False':
break
if __name__ == '__main__':
# 创建文件夹,如果已经有了该文件夹,记得注释,不然会报错
os.makedirs('./ys_tp/', exist_ok=True)
get()