Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3657026
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2022-08-03 17:21:05

# 导入数据请求模块  ---> 第三方模块 需要 在cmd里面进行安装 pip install requests

import requests

# 导入正则模块  ---> 内置模块 不需要安装

import re

# 导入文件操作模块  ---> 内置模块 不需要安装

import os

# 确定网址

link = ''

# 模拟伪装浏览器 ---> 请求头

headers = {

    # user-agent 用户代理 表示浏览器基本身份标识

    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'

}

# 发送请求

json_data = requests.get(url=link, headers=headers).json()

# for循环遍历

for index in json_data:

    # 字典键值对取值 根据冒号左边的内容[],提取冒号右边的内容[]

    hero_id = index['ename']

    hero_name = index['cname']

    # 设定文件夹路径 相对路径

    file = f'img\\{hero_name}\\'

    if not os.path.exists(file):

        os.makedirs(file)

    """

    1. 发送请求, 模拟浏览器对于url地址发送请求

        - headers 字典数据类型, 构建完整键值对

        - 请求头参数 可以直接在开发者工具复制粘贴

        - 使用什么请求方法, 根据开发者工具来

    """

    # 确定请求url地址

    url = f'{hero_id}.shtml'

    # 模拟伪装浏览器 ---> 请求头

    headers = {

        # user-agent 用户代理 表示浏览器基本身份标识

        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'

    }

    # 发送请求 ---> 响应对象: <>表示对象 response 响应回复 200 状态码 表示请求成功

    response = requests.get(url=url, headers=headers)

    # 乱码了 怎么办? ---> 你要根据网页编码来 response.encoding = 'gbk'

    # 自动识别编码

    response.encoding = response.apparent_encoding

    # 获取数据, 获取服务器返回响应数据 文本数据 print(response.text)

    """

    解析数据 re正则  会1 不会2

        re.findall()  从什么地方 去找什么数据

         response.text 里面 去找 data-imgname="(.*?)"> 其中 (.*?) 就是我们要的数据

    """

    title_list = re.findall('data-imgname="(.*?)">', response.text)[0]

    # 鹿灵守心&0|&0|遇见神鹿&71|时之祈愿&94|时之愿境&42

    title_list = 外汇跟单gendan5.comre.sub('&\d+', '', title_list).split('|')

    print(title_list)

    # for循环 for num in range(1, 6): len() 统计列表元素个数

    for num in range(1, len(title_list) +1):

        # 列表取值, 根据索引位置,索引位置从0开始计数

        img_name = title_list[num-1]

        # 构建图片url地址

        img_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{num}.jpg'

        print(img_name, img_url)

        # 保存数据 ---> 发送请求 获取数据 二进制数据

        img_content = requests.get(url=img_url, headers=headers).content

        with open(file + img_name + '.jpg', mode='wb') as f:

            f.write(img_content)

阅读(375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~