王者荣耀官网https://pvp.qq.com/web201605/wallpaper.shtml壁纸的python爬取
链接: 王者荣耀壁纸官网.
遇到的问题
此网站的壁纸显示采用了动态网页技术,也就是说用爬取一般的静态网站的方法是不行的。笔者一开始就是妄图使用大名鼎鼎的requests库的get()方法来获取该网站的HTML源码,但是发现里面并没有想要的关于壁纸的信息。百度之后知道了问题的解决方法:就是弃用requests库,转战selenium库
神奇的selenium库
1.安装selenium库
pip install selenium
2.下载chromedriver.exe并将其放在你的谷歌浏览器chrome.exe所在目录。
3.导入selenium库中的webdriver,相当于模拟浏览器的运行
from selenium import webdriver
观察网页源代码(这一步很关键)
在浏览器中打开网址,按F12键,点击下图圈出的按键,然后随便点击一个壁纸图片
如下图,按1,2,3操作
复制元素后,粘贴观察,得到三处关键点
<div class="p_newhero_item"><imgdata-src="http://shp.qpic.cn/ishow/2735010212/1577940124_84828260_1263_sProdImgNo_1.jpg/200"src="http://shp.qpic.cn/ishow/2735010212/1577940124_84828260_1263_sProdImgNo_1.jpg/0" width="215" height="120"alt="貂蝉-猫影幻舞"><a href="###" class="p_item_imghover"><li class="sProdImgDown sProdImgL5"><ahref="http://shp.qpic.cn/ishow/2735010212/1577940125_84828260_1263_sProdImgNo_5.jpg/0"rel="http://shp.qpic.cn/ishow/2735010212/1577940125_84828260_1263_sProdImgNo_5.jpg/200"target="_blank">
第1处,通过class属性可以找到关键位置;
第2处,通过img标签的alt属性可以设置壁纸的名字,如貂蝉-猫影幻舞
第3处,通过li标签的a标签的href属性可以得到1980*1080的壁纸网址(这才是灵魂所在啊)
代码
from selenium import webdriver
import time
from selenium.common.exceptions import StaleElementReferenceExceptiondef get_img_data(img_url,file_name):#下载图片数据headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"}try:r = requests.get(img_url, headers=headers, timeout=20)r.raise_for_status()if r.status_code == 200:with open(file_name, 'wb') as fw:fw.write(r.content)except Exception as e:print('Error: ', e)returndef get_list():#得到壁纸的网址列表es = driver.find_elements_by_class_name('p_newhero_item')for i in es:i.get_attribute('innerHTML')et = i.find_element_by_tag_name('img').get_attribute('alt')name_list.append(et)ee = i.find_elements_by_tag_name('li')for j in ee:if j.get_attribute('class') == 'sProdImgDown sProdImgL6':ui = j.find_element_by_tag_name('a')url_list.append(ui.get_attribute('href'))def nextpage():#模拟浏览器点击下一页,从而得以继续爬取es = driver.find_element_by_id('Page_Container_267733')et = es.find_elements_by_tag_name('a')for u in et:if u.get_attribute('class') == 'downpage':print(u.get_attribute('alt'))u.click()url='https://pvp.qq.com/web201605/wallpaper.shtml''''下面三行代码如果就会出现阻塞错误,没办法,加上就完事了'''
options=webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
driver=webdriver.Chrome(chrome_options=options)driver.get(url)url_list=[]#图片网址列表
name_list=[]#图片名字列表for o in range(0,20):get_list()if o != 19:try:nextpage()except StaleElementReferenceException:#模拟点击下一页总会出现这个错误,所以加上此异常处理time.sleep(1)print('try to find element click')num = len(name_list)
for t in range(0,num):path = 'tupian/'+name_list[t]+'.jpg'get_img_data(url_list[t],path)#开始下载图片print(path+' had been stored.')input('Press ENTER to close the automated browser')
driver.quit()
第一次发博客嘻嘻!!!,大家见谅
王者荣耀官网https://pvp.qq.com/web201605/wallpaper.shtml壁纸的python爬取相关推荐
- 爬取王者荣耀官网英雄皮肤高清壁纸(简易方法)
代码加详细注释. import requests #import os url = "https://pvp.qq.com/web201605/js/herolist.json" ...
- 王者荣耀官网皮肤图片获取
王者荣耀官网皮肤获取 最近在练习的时候写的一个可以获取王者荣耀官网每一个英雄的皮肤图片 代码如下 import requests import json import os from lxml imp ...
- python爬虫爬取王者荣耀官网全部装备图片(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests from bs4 import Beauti ...
- Python爬取网页所需内容+王者荣耀官网
目标: 完成对王者荣耀游戏的所有英雄头像.皮肤等数据的内容爬取及图片下载,所涉及到的模块内容有requests.json.lxml.selenium.os等.王者荣耀英雄官网地址如下:https:// ...
- 数据藏在json文件中,如何爬取---以王者荣耀官网为例
此前写了一个爬虫基础案例---爬取王者荣耀英雄与技能介绍 python爬虫------王者荣耀英雄及技能爬取并保存信息到excelhttps://blog.csdn.net/knighthood200 ...
- node.js(六)之crawler爬虫模块爬取王者荣耀官网所有英雄资源信息
node.js爬虫模块爬取王者荣耀所有英雄信息 一.准备工作 https://pvp.qq.com/web201605/herolist.shtml进入王者荣耀所有英雄页面: 你会看到所有的英雄,打开 ...
- Python爬虫项目:下载王者荣耀官网所有皮肤并对名称(以后更新的也可以)
博主的学习网站 : https://bigdataboy.cn/ 分为两步: 1.找到皮肤图片的地址 函数只需要传入英雄编号即可返回 {皮肤名称:链接地址} 形式 def Downloed_ksin( ...
- Node 插件 爬取王者荣耀官网英雄信息,并生成数据库
文章结构 打开官网看接口地址 打开官网 游戏资料里的英雄资料,并打开后台 接下来是英雄技能 技能结构路径方便抓取 jQ的获取元素这里不细说 重头戏 抓包到到数据库 全部代码 看数据库 总结 打开官网看 ...
- python爬虫爬取王者荣耀官网全部英雄头像(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests import json from bs4 i ...
最新文章
- OpenCASCADE可视化:3D演示之3D视图设施
- MacosX 下GCC编译指定版本的代码
- python 判断每月最后一天_python获取某年中每个月的第一天和最后一天的两种方法...
- Linux无线网卡的工作模式
- UpdatePanel 的 UpdateMode 和 ChildrenAsTriggers(较好的总结了前面几篇博客的内容)
- POJ 2960 博弈论
- pp-tracking ubuntu 18.04使用GPU推理出现Segmentation fault
- BP神经网络分类算法
- Java 运算符(Operators)
- 微信红包数字变化动态图片_微信红包数字动图下载_微信动态图片红包图下载_游戏吧...
- 林轩田之机器学习课程笔记( embedding numerous feature之support vector regression)(32之22)
- MoverScore: Text Generation Evaluating with Contextualized Embeddings and Earth Mover Distance
- Android有用代码(二)
- 编程之路,从懵懂开始
- php转换音频采样率,非整数倍SRC采样率转换问题样本试听
- android expandablelistview横向,Android ExpandableListView使用小结(一)
- 蓝桥杯官网练习系统——基础练习 圆的面积
- 找不到该项目无法删除
- 对于动态“内存”分配,Have you explored?(C语言)
- Java实现波峰统计
热门文章
- Iterator 详解
- 通达信如何检测未来函数?
- erwin教程 mysql_如何使用Erwin进行基于MySQL的数据库设计
- 在SHP, DWG, DXF, KML/KMZ矢量数据中自由行走
- c语言递归求差分方程,关于差分方程
- 511遇见易语言大漠多线程自动切换账号循环登录任务模板
- 基于树莓派搭建自动驾驶小车;Donkey Car组装硬件DIY
- 你知道现在各行各业对学历的要求有多高吗?如果学历不够,怎么办?
- Gio.js -- 一个基于 Three.js 的 Web3D 地球数据可视化库(二)
- SAP ABAP 业务对象 BUS1115 ActivityTypeGroup 作业类型组 BAPI 清单和相关 TCODE