我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python-爬虫-xpath方法-批量爬取王者皮肤图片

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python-爬虫-xpath方法-批量爬取王者皮肤图片

import requestsfrom lxml import etree

获取NBA成员信息

# 发送的地址url = 'https://nba.hupu.com/stats/players'# UA 伪装  googleheader = {    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}r = requests.get(url)# print(r.text)  # jupyter 打印可以看到格式化的html数据# 将HTML文本解析成Element对象e = etree.HTML(r.text)players = e.xpath('//*[@id="data_js"]/div[4]/div/table/tbody/tr/td[2]/a/text()')teams = e.xpath('//*[@id="data_js"]/div[4]/div/table/tbody/tr/td[3]/a/text()')# 保存到txt文件with open('nba.txt','w',encoding='utf-8') as f:    for player,team in zip(players,teams):        f.write(f'球员:{player} - - - 球队:{team}\n')

球员:乔尔-恩比德 - - - 球队:76人
球员:卢卡-东契奇 - - - 球队:独行侠
球员:达米安-利拉德 - - - 球队:开拓者

批量爬取王者荣耀皮肤图片

在这里插入图片描述

  • 爬取一张图片
url = 'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/505/505-bigskin-7.jpg'r = requests.get(url)# 保存图片# w write b 二进制with open('a.jpg','wb') as f:    f.write(r.content)

在这里插入图片描述

  • 该角色有7个皮肤 爬取7个图片
for i in range(1,8):    url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/505/505-bigskin-{i}.jpg'    r = requests.get(url)    with open(f'{i}.jpg','wb') as f:        f.write(r.content)    
  • 获取这7个皮肤的名字 保存图片
headers = {    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69'}url = 'https://pvp.qq.com/web201605/herodetail/505.shtml'r = requests.get(url,headers=headers)r.encoding='gbk'e = etree.HTML(r.text)# e.xpath 返回一个列表  使用索引[0]变为strnames = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]  # '鹿灵守心&0|森&0|遇见神鹿&71|时之祈愿&94|时之愿境&42|山海·碧波行&109|真我赫兹&117'# names.split('|') # split只能用于str,不能用于list  # ['鹿灵守心&0', '森&0', '遇见神鹿&71', '时之祈愿&94', '时之愿境&42', '山海·碧波行&109', '真我赫兹&117']names = [name[0:name.index('&')] for name in names.split('|')] # ['鹿灵守心', '森', '遇见神鹿', '时之祈愿', '时之愿境', '山海·碧波行', '真我赫兹']for i,n in enumerate(names):    url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/505/505-bigskin-{i+1}.jpg'    r = requests.get(url)    with open(f'{n}.jpg','wb') as f:        f.write(r.content)

在这里插入图片描述

  • 获取所有英雄皮肤
    在这里插入图片描述

把该行网址复制到网址栏,会自动下载该文件

https://pvp.qq.com/web201605/js/herolist.json

该文件内容如下,有英雄的各种信息
每个花括号 { } 是一个json数据
在这里插入图片描述

import requestsfrom lxml import etreeimport osfrom time import sleepheaders = {    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69'}url = 'https://pvp.qq.com/web201605/js/herolist.json'r = requests.get(url,headers=headers)for x in r.json():    ename = x.get('ename')  # 数字  url里面变化的那个数字    cname = x.get('cname')  # 英雄的名字        if not os.path.exists(cname):        os.makedirs(cname)            urlone = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'    r = requests.get(url=urlone,headers=headers)    r.encoding='gbk'    e = etree.HTML(r.text)    # e.xpath 返回一个列表  使用索引[0]变为str    names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]  # '鹿灵守心&0|森&0|遇见神鹿&71|时之祈愿&94|时之愿境&42|山海·碧波行&109|真我赫兹&117'    # names.split('|') # split只能用于str,不能用于list  # ['鹿灵守心&0', '森&0', '遇见神鹿&71', '时之祈愿&94', '时之愿境&42', '山海·碧波行&109', '真我赫兹&117']    names = [name[0:name.index('&')] for name in names.split('|')] # ['鹿灵守心', '森', '遇见神鹿', '时之祈愿', '时之愿境', '山海·碧波行', '真我赫兹']    for i,n in enumerate(names):        url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i+1}.jpg'        r = requests.get(url)        with open(f'{cname}/{n}.jpg','wb') as f:            f.write(r.content)         print(f'{n}已下载')        sleep(1) 

部分图片展示
在这里插入图片描述
xpath分析
在这里插入图片描述

//ul[@class=“pic-pf-list pic-pf-list3”]/@data-imgname

asd = '鹿灵守心&0'asd.index('心')  # 3  # 心在index3的位置

迭代器 在最左和最右加上方括号[ ]就会变成str

os.makedirs and os.mkdir

os.makedirs和os.mkdir都是用于创建目录的函数,但有以下区别:

  1. os.mkdir只能创建一级目录,而os.makedirs可以同时创建多级目录。

  2. 如果要创建的目录已经存在,os.mkdir会抛出FileExistsError异常,而os.makedirs不会抛出异常。

  3. os.makedirs还可以通过设置exist_ok参数来控制是否抛出异常。如果exist_ok为True,表示即使目录已经存在也不会抛出异常,如果为False,则会抛出异常。

示例代码:

import os# 创建单级目录os.mkdir('dir1')# 创建多级目录os.makedirs('dir2/subdir1/subdir2')# 创建已存在的目录os.mkdir('dir1') # 会抛出异常os.makedirs('dir2/subdir1/subdir2') # 不会抛出异常# 创建已存在的目录时,设置exist_ok参数os.makedirs('dir2/subdir1/subdir2', exist_ok=True) # 不会抛出异常os.makedirs('dir2/subdir1/subdir2', exist_ok=False) # 会抛出异常

xpath工具

# 将HTML文档加载进来html = etree.parse('demo.html')# 将HTML文档解析成Element对象root = html.getroot()

Python爬虫中,使用xpath提取HTML或XML文档中的元素是非常常见的操作。下面是etree库中xpath常用的方法:

  1. xpath():在文档中使用xpath表达式进行查找,返回匹配的元素列表。

  2. find():在文档中查找匹配xpath表达式的第一个元素,返回元素对象。

  3. findall():在文档中查找匹配xpath表达式的所有元素,返回元素对象列表。

  4. text属性:获取元素的文本内容。

  5. attrib属性:获取元素的属性。

  6. get()方法:获取指定属性的值。

  7. iter()方法:获取文档中所有匹配xpath表达式的元素,返回迭代器对象。

  8. Element()方法:创建一个新的元素对象。

  9. SubElement()方法:在指定元素下创建一个新的子元素。

  10. ElementTree()方法:创建一个新的XML文档树对象。

以上这些方法是在使用xpath提取HTML或XML文档中的元素时经常使用的方法,掌握了这些方法,就可以方便地对文档进行操作了。

来源地址:https://blog.csdn.net/weixin_64729620/article/details/132699118

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python-爬虫-xpath方法-批量爬取王者皮肤图片

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python爬虫怎么批量爬取百度图片

这篇文章将为大家详细讲解有关python爬虫怎么批量爬取百度图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬
2023-06-14

Python爬虫:如何快速掌握Python爬虫核心技术,批量爬取网络图片

对于爬虫,很多伙伴首选的可能就是Python了吧,我们在学习Python爬虫的时候得有侧重点,这篇文章教大家如何快速掌握Python爬虫的核心!有不清楚的地方,可以留言!1. 概述本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录