Python爬取王者荣耀英雄的皮肤数据并下载皮肤图片项目

Python爬取王者荣耀英雄的皮肤数据,并下载皮肤图片!高清的图片用来做桌面也不错哟~

网址:https://pvp.qq.com/web201605/herolist.shtml

1.获得英雄信息,并保存为json文件

1.1 使用requests爬取信息,requests模块爬取的是Network/Response下的静态数据。
首先获取网页的数据(有如下1.1和1.2两种方式),在此之前先了解xpath的使用:xpath是使用节点路径表达式来选取XML或HTML文档中的节点或节点集。常见的路径表达式如下

路径表达式 含义
/ 从根节点开始选取,也就是当前目录
// 从任意位置开始
. 当前目录
@ 选取属性
text() 获取某标签内的内容值

例如我们要获得百度首页右上方的文字“新闻”,它的表达式就是
//div[@id = 's-top-left']/a[1]/text()
任意位置的div,属性id的值为s-top-left,它里面的第一个a标签的内容值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200514163525643.png?x-oss-
json模板的2个常用方法

dump(obj,fp, ensure=True,indent=None) 将Python的基本数据类型序列化成字符串并写入到文件中。
load(obj) 读取文件中的字符串,转化成Python的基本数据类型。

在这里插入图片描述
使用requests模块爬取数据的代码如下:

import requests
import lxml.html
import os
import json
from fake_useragent import UserAgent

def parse_hero_url(http_url):
    #发送请求获取整个页面数据
    headers = {
   
            "User-Agent" : UserAgent().chrome #chrome浏览器随机代理
        }
    hero_r = requests.get(http_url,headers = headers)
    demo =  hero_r.content.decode('gbk')
    return demo

def get_data(hero_url):
        #获取网页数据
        data = parse_hero_url(hero_url)
        #print(data)
     
        #获取etree对象
        metree = lxml.html.etree
        #获取解析器对象
        parse = metree.HTML(data)
        #开始解析
        hero_list = parse.xpath("//div[@class='herolist-content']/ul[@class='herolist clearfix']/li")
        print(len(hero_list))#查看我们爬取到几个英雄的信息
        #print(hero_list)
        list = []
        for li in hero_list:
            item = {
   }
            name = li.xpath("./a/text()")[0]
            #print(name)
            item['name'] = name
            src = "https:"+li.xpath("./a/img/@src")[0]
            #print(src)
            item['src'] = src
            href_url = "https://pvp.qq.com/web201605/"+li.xpath("./a/@href")[0]
            #print(href_url)
            item['href_url'] = href_url
            #print(item)
            list.append(item)
#         print(list)
        return list

#保存文件
def save_file_json(datas):
    #如果路径不存在,则创建
    path_name = './hero'   
    if not os.path.exists(path_name):
        os.makedirs(path_name)
        print('目录[%s]保存英雄信息创建成功!'%path_name)
    #保存数据
    with open(path_name+'/hero.json', 'w',encoding='utf-8') as f:
        json.dump(datas, f,ensure_ascii=False,indent=2)
    print('英雄数据保存
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值