Python 爬取QQ飞车手游赛道 or 宠物 图片

1、https://speedm.qq.com/web201712/map_list.shtml 赛道URL

      https://speedm.qq.com/web201712/pet_list.shtml 宠物URL

下面以爬取赛道图片为例

2、进入开发人员工具,点击Network,并选中XHR,XHR是浏览器与服务器请求数据所依赖的对象,所以通过它便能筛选出一些服务器的响应数据。

3、下图红色框地址返回赛道信息的 jsonp 格式数据

       问号后面显示的是时间戳可以不用管它;

 4、dtm_88:赛道名称,slt_3c:528x260 图片url,tt_8a:1200x500 图片url

5、接下来开始写代码:

import requests
import json
import re
from tqdm import tqdm
import os

headers= {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
#宠物 https://speedm.qq.com/zlkdatasys/data/pet_list/list.json?_=1606187805572
#赛道 https://speedm.qq.com/zlkdatasys/data/map_list/list.json?_=1606187805572
url = 'https://speedm.qq.com/zlkdatasys/data/map_list/list.json?_=1606187805572'

response = requests.get(url, headers=headers, allow_redirects=False)
if response.status_code != 200:
    print("请求失败!")
else:
    # 创建文件夹
    if not os.path.exists('D:/QQ飞车手游地图/'):
        os.mkdir('D:/QQ飞车手游地图/')
    # 进入文件夹
    os.chdir('D:/QQ飞车手游地图/')

    text = response.text
    #使用正则去除外层maps_data() 宠物:cwsy_80 赛道:dtsy_1f
    info_list = json.loads(re.match(".*?({.*}).*", text, re.S).group(1))['dtsy_1f']
    map_num = len(info_list)

    for i in tqdm(range(map_num), '正在爬取QQ飞车手游的地图'):
        #地图名称 宠物:mc_77  赛道:dtm_88
        map_name = info_list[i]['dtm_88']
        #地图url
        map_url = info_list[i]['slt_3c']
        #拼接url
        map_url = 'https:' + map_url
        response = requests.get(map_url, headers=headers, allow_redirects=False)
        if response.status_code != 200:
            print("请求失败!")
        else:
            with open(map_name + ".jpg", 'wb') as f:
                f.write(response.content)
                f.close()
        pass

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值