python爬虫详解(五)——爬取王者荣耀英雄详细、攻略搭配、出装配置、铭文搭配、搭档/压制、入手详情
今天给大家爬取一个王者荣耀的详情,让大家更好更快了解,说白了,就是想练练手
点个赞留个关注吧!!
今天爬取的内容相对简单,我也不知道难不难,可能对于新手来说会一点难,难就难着吧,不下功夫当然过不了,熬三个夜晚就会了
今天爬取的主要内容分别是:英雄名称、详情链接、英雄属性(生存、伤害、技能、难度)、英雄皮肤(非图片)、铭文搭配推荐、召唤师技能推荐(针对不同英雄给予不同的推荐)、出装搭配推荐(两种方案)、最佳的搭档、压制英雄、被压制英雄
爬取的不包含图片/文件,只有可视文字字幕,,用了一个晚上做出来的,闲的睡不着觉才想到做这个爬虫的,希望能帮助到大家,不妨先点个关注,给个赞也可以
因为这个网站的一些问题,爬取不到前几位的英雄,我试了很多次都无济于事,也懒得搞了就暂时先不管这个了,如果有哪一位博主知道怎么回事,请在评论区或私信说一下,谢谢
废话不多说,由于代码较多,原本我也想分三个文件写入,但是我太懒了,直接写到一个py文件内了,直接上代码:
# -*- coding: utf-8 -*-
import requests
import re
from bs4 import BeautifulSoupURL = requests.get('https://pvp.qq.com/web201605/herolist.shtml')
html = URL.content
soup = BeautifulSoup(html,'html.parser',from_encoding="utf-8") #解析器
div_people_list = soup.find('ul', attrs={'class': 'herolist clearfix'})for a in div_people_list.find_all('li'):#爬取人物详情链接text_1 = a.find('a')URL_2 = ('https://pvp.qq.com/web201605/'+text_1['href']) #链接#脾气任务名称URL_3 = requests.get(f'{URL_2}')html_2 = URL_3.content #再次解析soup_2 = BeautifulSoup(html_2,'html.parser',from_encoding="utf-8") #解析器text_2 = soup_2.find('h2', attrs={'class': 'cover-name'}).get_text() #名称#print(text_2+'\t\t'+URL_2)#爬取任务伤害比例text_3 = soup_2.find('ul', attrs={'class': 'cover-list'}) # 伤害T = 0for text_4 in text_3.find_all('i', attrs={'class': 'ibar'}):r = text_4['style']T += 1#获取属性伤害if T == 1:print(f'------------------------------>>{text_2}<<------------------------------\n'+text_2 + '\t人物详情链接:' + URL_2)print('生存能力:', end='')print(re.findall('width:(.*)', r), end='')else:if T == 2:print('\t\t攻击伤害:', end='')print(re.findall('width:(.*)', r))else:if T == 3:print('技能效果:', end='')print(re.findall('width:(.*)', r), end='')else:if T == 4:print('\t\t上手难度:', end='')print(re.findall('width:(.*)', r))#皮肤获取text_5 = soup_2.find('ul', attrs={'class': 'pic-pf-list pic-pf-list3'})['data-imgname'] # 读取标签data = text_5.replace("&0", "").replace("|", "] [").replace("&", "") #去除杂物new_string = ''.join([i for i in data if not i.isdigit()]) #去除烦人的数字print(f'{text_2}的皮肤:['+new_string+']') #打印皮肤#铭文推荐text_6 = soup_2.find('ul', attrs={'class': 'sugg-u1'})['data-ming']data_2 = text_6.replace("|", "] [") # 替换#铭文ID转换def mwtj(f):if f == 1514:f = '梦魇'return felse:if f == 3531:f = '心眼'return felse:if f == 2520:f = '狩猎'return felse:if f == 1504:f = '异变'return felse:if f == 3514:f = '鹰眼'return felse:if f == 2517:f = '隐匿'return felse:if f == 1510:f = '无双'return felse:if f == 2503:f = '贪婪'return felse:if f == 3515:f = '心眼'return felse:if f == 1512:f = '宿命'return felse:if f == 2515:f = '调和'return felse:if f == 3509:f = '虚空'return felse:if f == 3515:f = '心眼'return felse:if f == 3516:f = '怜悯'return felse:if f == 1501:f = '圣人'return felse:if f == 3511:f = '献祭'return felse:if f == 2512:f = '轮回'return felse:if f == 2506:f = '兽痕'return felse:if f == 1517:f = '凶兆'return felse:if f == 2506:f = '兽痕'return felse:if f == 1519:f = '祸源'return felse:if f == 1503:f = '传承'return felse:if f == 3503:f = '均衡'return felse:if f == 2501:f = '长生'return felse:if f == 1520:f = '红月'return felse:if f == 2504:f = '夺萃'return felse:if f == 1505:f = '纷争'return felse:if f == 3518:f = '回声'return felse:pass#读取铭文IDdata_3 = int(data_2[0:][:4])data_4 = int(data_2[8:][:4])data_5 = int(data_2[16:][:4])#打印铭文print('铭文搭配推荐:['+mwtj(data_3) +'] ['+ mwtj(data_4) +'] ['+ mwtj(data_5)+']')#推荐召唤师技能def Z_C(L):if L == 80115:L = '闪现'return Lelse:if L == 80107:L = '净化'return Lelse:if L == 80102:L = '治疗'return Lelse:if L == 80108:L = '终结'return Lelse:if L == 80121:L = '弱化'return Lelse:if L == 80103:L = '眩晕'return Lelse:if L == 80104:L = '惩击'return Lelse:if L == 80109:L = '疾跑'return Lelse:if L == 80110:L = '狂暴'return Lelse:passskill = soup_2.find('div', attrs={'class': 'sugg-info2 info'})skill_list = skill.find('p', attrs={'id': 'skill3'})['data-skill']skill_2 = skill_list.replace("|", " ") # 替换Z_1 = int(skill_2[0:][:8])Z_2 = int(skill_2[7:][:8])print('召唤师技能推荐:['+Z_C(Z_1)+'] 或 ['+Z_C(Z_2)+']')#推荐出装#出装一cz_list_1 = soup_2.find('div', attrs={'class': 'equip-info l'})cz_text = cz_list_1.find('ul', attrs={'class': 'equip-list fl'})['data-item']#出装二cz_list_2 = soup_2.find('div', attrs={'class': 'equip-bd'})cz_text_2 = cz_list_2.find_all('div', attrs={'class': 'equip-info l'})[1]cz_2 = cz_text_2.find('ul', attrs={'class': 'equip-list fl'})['data-item']def cztj(G):if G == 1425:G = '急速战靴'return Gelse:if G == 1126:G = '末世'return Gelse:if G == 1137:G = '暗影战斧'return Gelse:if G == 1138:G = '破军'return Gelse:if G == 1155:G = '破晓'return Gelse:if G == 1127:G = '名刀·司命'return Gelse:if G == 1132:G = '泣血之刃'return Gelse:if G == 1423:G = '冷静之靴'return Gelse:if G == 1233:G = '回响之杖'return Gelse:if G == 1235:G = '痛苦面具'return Gelse:if G == 1232:G = '博学者之怒'return Gelse:if G == 1727:G = '日暮之流'return Gelse:if G == 1238:G = '贤者之书'return Gelse:if G == 1240:G = '噬神之书'return Gelse:if G == 1234:G = '凝冰之息'return Gelse:if G == 1533:G = '贪婪之噬'return Gelse:if G == 1422:G = '抵抗之靴'return Gelse:if G == 1137:G = '暗影战斧'return Gelse:if G == 13310:G = '冰痕之握'return Gelse:if G == 1335:G = '魔女斗篷'return Gelse:if G == 1129:G = '速击之枪'return Gelse:if G == 1728:G = '金色圣剑'return Gelse:if G == 1222:G = '血族之书'return Gelse:if G == 1231:G = '虚无法杖'return Gelse:if G == 1223:G = '光辉之剑'return Gelse:if G == 1236:G = '巫术法杖'return Gelse:if G == 1134:G = '宗师之力'return Gelse:if G == 1131:G = '碎星锤'return Gelse:if G == 1336:G = '极寒风暴'return Gelse:if G == 1334:G = '不死鸟之眼'return Gelse:if G == 1532:G = '巨人之握'return Gelse:if G == 1426:G = '疾步之靴'return Gelse:if G == 1332:G = '霸者重装'return Gelse:if G == 1327:G = '反伤刺甲'return Gelse:if G == 1421:G = '影忍之足'return Gelse:if G == 1333:G = '不详征兆'return Gelse:if G == 1337:G = '贤者的庇护'return Gelse:if G == 1522:G = '巡守利斧'return Gelse:if G == 1133:G = '无尽战刃'return Gelse:if G == 1136:G = '影刃'return Gelse:if G == 1721:G = '极影'return Gelse:if G == 1722:G = '救赎之翼'return Gelse:if G == 1331:G = '红莲斗篷'return Gelse:if G == 1239:G = '辉月'return Gelse:if G == 1523:G = '追击刀锋'return Gelse:if G == 1333:G = '不详征兆'return Gelse:if G == 1424:G = '秘法之靴'return Gelse:if G == 1135:G = '闪电匕首'return Gelse:if G == 1724:G = '近卫荣耀'return Gelse:if G == 1226:G = '圣杯'return Gelse:if G == 1226:G = '圣杯'return Gelse:if G == 1225:G = '进化水晶'return Gelse:if G == 1531:G = '符文大剑'return Gelse:if G == 1227:G = '炽热支配者'return Gelse:if G == 1237:G = '时之预言'return Gelse:if G == 11311:G = '纯净苍穹'return Gelse:if G == 1521:G = '游击弯刀'return Gelse:if G == 1328:G = '血魔之怒'return Gelse:if G == 12211:G = '梦魇之牙'return Gelse:if G == 1723:G = '奔狼纹章'return Gelse:if G == 1338:G = '爆裂之甲'return Gelse:pass#出装一 进行转换data_2 = cz_text.replace("|", " ") # 替换C_z_1 = int(data_2[0:][:7])C_z_2 = int(data_2[10:][:12])C_z_3 = int(data_2[22:][:15])C_z_4 = int(data_2[36:][:15])C_z_5 = int(data_2[50:][:16])C_z_6 = int(data_2[65:][:16])# 出装二 进行转换data_list2 = cz_2.replace("|", " ") # 替换C_z_2_1 = int(data_list2[0:][:7])C_z_2_2 = int(data_list2[10:][:12])C_z_2_3 = int(data_list2[22:][:15])C_z_2_4 = int(data_list2[36:][:15])C_z_2_5 = int(data_list2[50:][:16])C_z_2_6 = int(data_list2[65:][:16])#打印出装一print('推荐出装一:[' + cztj(C_z_1) + '] [' + cztj(C_z_2) + '] [' + cztj(C_z_3) + '] [' + cztj(C_z_4) + '] [' + cztj(C_z_5) + '] [' + cztj(C_z_6) + ']')#打印出装二try:print('推荐出装二:[' + cztj(C_z_2_1) + '] [' + cztj(C_z_2_2) + '] [' + cztj(C_z_2_3) + '] [' + cztj(C_z_2_4) + '] [' + cztj(C_z_2_5) + '] [' + cztj(C_z_2_6) + ']')except:print('推荐出装二:[' + cztj(C_z_2_1) + '] [' + cztj(C_z_2_2) + '] [' + cztj(C_z_2_3) + '] [' + cztj(C_z_2_4) + '] [' + cztj(C_z_2_5) + ']')#搭配英雄推荐dp = soup_2.find('div', attrs={'class': 'hero-info-box'})H = 0for TTT in range(3):dp_list_1 = dp.find_all('div', attrs={'class': 'hero-info l info'})[H].find('a')['href']URL_4 = ('https://pvp.qq.com/web201605/herodetail/' + dp_list_1) # 链接URL_5 = requests.get(f'{URL_4}')html_3 = URL_5.content # 再次解析soup_3 = BeautifulSoup(html_3, 'html.parser', from_encoding="utf-8") # 解析器text_7 = soup_3.find('h2', attrs={'class': 'cover-name'}).get_text() # 搭档一dp_list_2 = dp.find_all('div', attrs={'class': 'hero-info l info'})[H].find_all('a')[1]['href']URL_5 = ('https://pvp.qq.com/web201605/herodetail/' + dp_list_2) # 链接URL_5 = requests.get(f'{URL_5}')html_4 = URL_5.content # 再次解析soup_4 = BeautifulSoup(html_4, 'html.parser', from_encoding="utf-8") # 解析器text_8 = soup_4.find('h2', attrs={'class': 'cover-name'}).get_text() # 搭档二H += 1if H == 1: #最佳搭档print('最佳搭档:['+text_7+'] ['+text_8+']')else:if H == 2: #压制英雄print('压制英雄:[' + text_7 + '] [' + text_8 + ']')else:if H == 3: #被压制英雄print('被压制英雄:[' + text_7 + '] [' + text_8 + ']')print('\n')H = 0if H == 4:H = 0passelse:if T == 5:T = 0else:pass
可以看到已经爬取出来了
不妨点个赞在走呗!!!
python爬虫详解(五)——爬取王者荣耀英雄详细、攻略搭配、出装配置、铭文搭配、搭档/压制、入手详情相关推荐
- Python爬虫——手把手教你爬取王者荣耀英雄皮肤
大家好!我是霖hero 大家知道目前最火的手游是哪个嘛,没错,就是王者荣耀,这款手游想必大家都听过或者玩过吧,里面有106个英雄,几百个英雄皮肤,今天我来手把手教你们把几百个皮肤都爬取下来. 目录 P ...
- python爬虫-20行代码爬取王者荣耀所有英雄图片,小白也轻轻松松
1.环境 python3.6 需要用到的库: re.os.requests 2.简介 王者荣耀可以算得上是比较受欢迎的手游之一了,应该有不少的人都入坑过农药,我们今天的目的就是要爬取王者荣耀的高清英雄 ...
- Python爬虫爬取王者荣耀英雄人物高清图片
Python爬虫爬取王者荣耀英雄人物高清图片 实现效果: 网页分析 从第一个网页中,获取每个英雄头像点击后进入的新网页地址,即a标签的 href 属性值: 划线部分的网址是需要拼接的 在每个英雄的具体 ...
- 教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)
教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中.(附源码) 代码展示: 保存在各自的文件夹中 美么? 让我们开始爬虫之路 开发环境 windows 10 python3. ...
- Python批量爬取王者荣耀英雄高清壁纸
Python批量爬取王者荣耀英雄高清壁纸 文章目录 Python批量爬取王者荣耀英雄高清壁纸 前言 爬虫步骤 python代码实现 总结 前言 很多喜欢玩王者的朋友很希望把王者荣耀的英雄图片拿来做壁纸 ...
- Java爬虫 --- 爬取王者荣耀英雄图片
Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...
- Python爬取王者荣耀英雄的皮肤数据并下载皮肤图片项目
Python爬取王者荣耀英雄的皮肤数据,并下载皮肤图片!高清的图片用来做桌面也不错哟~ 网址:https://pvp.qq.com/web201605/herolist.shtml 1.获得英雄信息, ...
- 爬虫爬取王者荣耀 英雄故事 和技能
初识爬虫 爬取王者荣耀英雄故事和技能 爬取王者荣耀英雄故事和技能 源码奉上 import requests import re import os from lxml import etree if ...
- Python爬取 | 王者荣耀英雄皮肤海报
这里只展示代码,具体介绍请点击下方链接. Python爬取 | 王者荣耀英雄皮肤海报 import requests import re import os import time import wi ...
最新文章
- Socket编程之简单介绍
- Linux学习之系统编程篇:PCB( 进程控制块)、进程状态、转换和控制
- vue+element+echarts柱状图+列表
- HDOJ1536 S-nim
- 网络传输之TCP/IP协议族
- sql2005(64位企业版)+weblogic9.2+win2008集群
- ASC2 E	 Quantization Problem DP
- P3254 圆桌问题
- JSON.stringify( new WebSocket(ws://localhost:8080/websocket.do))
- ArcGIS Pro 简明教程(4)工具和模型构建器
- 关于报表在移动端展现你需要知道哪些?
- js判断是否微信浏览器
- MJPEG和MP4——视频转换随想
- 使用Java实现一个简单的贪吃蛇小游戏
- 简要介绍SIGMOD2021接收的区块链相关论文
- java基础:面向对象编程23-this课后练习boygirl
- 政务云市场开启“狂飙”:一项前三,两项跃升!
- 22-3-16Java冒泡排序
- 安卓开发实现获取扫码枪扫码二维码、条形码后的内容
- java从小白到老白②
热门文章
- 基于粒子群算法优化的ELMAN动态递归神经网络预测-附代码
- 如何解决前端上线之后用户页面不刷新的问题
- 【AD18】原理图生成PCB
- 齐岳供应m-(L-Phe)O-C2-TPP、m-(L-Phe)O-C2-TPPZn、m-C2-(L-Phe)-C2(TPP)2、m-C2-(L-Phe)-C2(TPP)2Zn四种新式氨基酸卟啉
- 苹果手机悬浮窗怎么打开_怎么通过悬浮窗录音?再也不用担心文本被遮挡
- js判断平年闰年_用JS实现判断闰年
- Web前端实现一个图片放大镜
- mac系统安装yarn,配置淘宝镜像失败的问题
- android浏览器获取设备id,html 或者HTML5 加上js能获取手机设备的id号吗
- OpenCV-Python 4.5.4 人脸识别应用