Python爬取LOL高清皮肤壁纸

兴趣点:

这两天复习爬虫,CSDN上看到了一个爬取LOL皮肤的博客,哎这个有意思,看了一下他写的代码,感觉难度还可以,就结合着自己的理解写了一下

参考博客:

传送门:https://blog.csdn.net/weixin_44936889/article/details/103707406

爬取网址:

传送门:http://lol.52pk.com/pifu/hero/

爬虫大体思路及方法:

大体思路:
(1)我们的目标网页共43页,每页有25个皮肤左右,点开是皮肤大图及相关内容,其中的大图链接就是我们的目标
(2)我们要先把大约43×25个皮肤大图展示页面的链接先爬出来放到一个列表中
(3)再根据列表中的链接采用循环的方法获取其中的“英雄名-皮肤名”和皮肤图片链接,并将其一对一写入一个列表
(4)按顺序爬取列表中图片链接对应的图片并输出对应的提示信息
方法:
(1)页面获取方法:getHTMLText(url)
(2)把所有皮肤页URL写入列表:fillList(skinlist,url)
(3)获取皮肤命名和图片URL:getImageAddress(skinlist,nameAndImage)
(4)图片下载及保存:getImage(path,nameAndImage)
参数解读:
(1)skinlist——保存所有皮肤页面链接的列表
(2)nameAndImage——保存皮肤命名和皮肤图片链接的列表
(3)path——本地保存路径

部分细节讲解:

(1)观察网页原代码,找到页面的规律:

我们可以得知页面的真实地址,页面数43页和规律,所以后面的代码是这么写:

for i in range(1, 44):      #皮肤展示页面共43页
new_url = url + "hero_{}.shtml".format(i)   #拼出每个页面url

这里我是为了展示,其实没必要爬43页,毕竟Python运行速度太慢了

(2)目标网页可以识别Request请求,需要伪装成浏览器

kv = {"user-agent":"Mozilla/5.0"}
r = requests.get(url,headers = kv)

(3)从页面中获取到的文本尽量用 .strip() 方法去除两端空格

name = hero_name.strip() + '-' + skin_name.strip()

(4)踩坑记录:因为阿狸的KD/A皮肤文本里有一个"/",所以会造成找不到路径的错误,替换成空即可

name = name.replace('/', '')

(5)踩坑记录:关于 url 变量,在循环中不要写出下面这样的代码,url会变!url会变!url会变!

url = url + "hero_{}.shtml".format(i)

(6)Python标准异常:
菜鸟教程:https://www.runoob.com/python/python-exceptions.html
(7)关于打印进程提示信息:
有些同学可能认为这个没什么用,但这个很有用:一来可以提示程序运行的进度(Python运行实在是慢),二来可以用来差错,当断点使用

完整代码:

import requests
import re
import os
from bs4 import BeautifulSoupdef getHTMLText(url):try:kv = {"user-agent":"Mozilla/5.0"}r = requests.get(url,headers = kv)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print("getHTMLText失败!")return ""def fillList(skinlist,url):for i in range(1, 4):      #皮肤展示页面共43页new_url = url + "hero_{}.shtml".format(i)   #拼出每个页面urlhtml = getHTMLText(new_url)soup = BeautifulSoup(html, features = 'html.parser')div_soup = soup.find('div', class_ = 'ListBigContent')lis = div_soup('li')    #查询li标签for li in lis:skin_url = li.find('a', target='_blank')skin_url = skin_url.get("href")skinlist.append(skin_url)print("页面{0}解读完毕!".format(i))def getImageAddress(skinlist,nameAndImage):for url in skinlist:html = getHTMLText(url)soup = BeautifulSoup(html, features = 'html.parser')name_div = soup.find('div', class_ = 'pifuIntroText pifuIntroText2')hero_name = name_div.find('h2').textskin_name = name_div.find('h1').textname = hero_name.strip() + '-' + skin_name.strip()name = name.replace('/', '')    #把字符中的"/"替换成空,否则会影响路径,都是K/DA的锅image_div = soup.find('div', class_ = 'pifuIntroPic pifuIntroPic2')image_url = image_div.find('img')image_url = image_url.get('src')nameAndImage.append([name,image_url])print("{0}链接已获取!".format(name))def getImage(path,nameAndImage):try:if not os.path.exists(path):os.mkdir(path)for i in range(len(nameAndImage)):save_path = os.path.join(path, nameAndImage[i][0]+'.jpg')url = nameAndImage[i][1]r = requests.get(url)if not os.path.exists(save_path):image = r.contentwith open(save_path, 'wb') as f:f.write(image)print('{}保存成功!'.format(nameAndImage[i][0]))else:print('{}已存在'.format(nameAndImage[i][0]))  except Exception as e:print('{}保存失败'.format(nameAndImage[i][0]),e)def main():skinlist = []nameAndImage =[]path = "./image" url = "http://lol.52pk.com/pifu/hero/"fillList(skinlist,url)print("fillList成功")getImageAddress(skinlist,nameAndImage)print("getImageAddress成功")getImage(path,nameAndImage)print("getImage成功")main()

Python爬取LOL高清皮肤壁纸相关推荐

  1. 如何利用 Python 爬取 LOL 高清精美壁纸?

    作者 | 阿拉斯加 来源 | 杰哥的IT之旅 一.背景介绍 随着移动端的普及出现了很多的移动 APP,应用软件也随之流行起来.最近看到英雄联盟的手游上线了,感觉还行,PC 端英雄联盟可谓是爆火的游戏, ...

  2. python爬取4k高清壁纸(多线程版)

    刚学了多线程,于是把上次写的博客拿出来进行改写, 原文链接:python爬取4k高清壁纸(再也不怕没有壁纸了) 爬取过程已经在上一次写过了,可以点击原文链接查看. 废话不多说,直接上多线程代码: im ...

  3. 用Python爬取wallhaven高清原图

    wallhaven高清原图爬取 第一步:整理思路 第二步:分析网址 第三步:编写代码 第一步:整理思路 首先要知道自己要干嘛,怎么干,去哪里干?要干嘛?我们要爬取图片,而且我们要原图.怎么干?这里我用 ...

  4. python爬取4k高清壁纸(再也不怕没有壁纸了)

    今天突然想换壁纸,在网上找了一圈没有找到满意的,正好学了爬虫,于是我就想把它们全都爬取下来,慢慢挑选. 这次爬取的目标是:彼岸图网动漫壁纸 接下来,我将详细讲解爬取过程: 首先点开网站,右键–检查 观 ...

  5. 使用Python爬取微博高清美女大图

    打开微博官网,这里以爬取美女博主Duebass的所有图片为例,首先打开她的主页 主页中显示的都是一些小图,我们点击其中的某一张图片,就可以查看她的大图了. 打开F12查看图片的地址信息, //wx4. ...

  6. Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸

    来源:公众号[杰哥的IT之旅] 作者:阿拉斯加 ID:Jake_Internet 如需获取本文完整代码及 LOL 壁纸,请为本文右下角点赞并添加杰哥微信:Hc220088 获取. 一.背景介绍 随着移 ...

  7. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  8. python爬虫系列(2):分析Ajax 爬取搜狗高清壁纸

    这次我们来分析一下Ajax(至于Ajax是什么意思请自行百度了,这里就不过多解释),爬取一些高清壁纸,等待下载到本地之后,然后我们再慢慢的筛选这些壁纸.那么这次的目标就是搜狗壁纸,啥1280*720的 ...

  9. Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图

    Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图 写在前面 最近在玩蛇的时候发现一个抓包神器Fiddler,简直不要太好用,于是当作练手就把这软件给安排了,王者荣耀盒子一个 ...

最新文章

  1. 理想L2辅助驾驶都撞车了,特斯拉的L5之梦怎么办?
  2. Linux 下 svn 的使用
  3. python多线程加锁异步处理装饰器
  4. PAT甲级1006 Sign In and Sign Out:[C++题解]字符串处理
  5. 嵌入式培训学习历程第二十二天
  6. 解决安装DEB包时报错
  7. 赫夫曼编码-译码器(Huffman Coding)
  8. NSIS制作安装包实例
  9. 《别输在不会表达上》— 综合素质提升书籍
  10. Zynq7000硬件开发之电源供电系统(PDN)设计(一)
  11. photoshop基础图文教程:第一章 下载与安装
  12. 可以打印快递电子面单的表格
  13. 维吉尼亚密码(Vigenere)
  14. python 列表作业
  15. 项目oms之----阿里巴巴字体图标运用详解 (含:彩色图标svg运用)
  16. Google Filament 源码学习(二):三方库分类总结
  17. vue 强制刷新子组件
  18. 用python画竹子_智慧职教moocPython程序设计基础期末考试查题公众号答案
  19. ## 2048/简易/欢迎提出建议
  20. Huawei LiteOS

热门文章

  1. 在windows server 2012上搭建DNS服务器
  2. 官方的 Share 分享网站
  3. kengoro机器人哪儿有卖_2019全明星机器人专题第五期,流汗机器人——Kengoro
  4. QQ好友的价值玩法 及如何搞到几万好友?
  5. Java零钱通小项目
  6. 网页在微信内无法访问提示已停止访问该网页应该怎么解决
  7. 怎么用vue自动更新页面数据
  8. ZEBRA打印机打印图片的实现
  9. c++中也有java中的匿名内部类
  10. Windows平台下C++五子棋项目实战开发