selenium自动获取王者荣耀英雄海报并保存到本地

Posted yuwenS.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium自动获取王者荣耀英雄海报并保存到本地相关的知识,希望对你有一定的参考价值。

1、使用Selenium搞定王者荣耀英雄海报的下载

1.1、前期准备

需要有selenium、requests、bs4包,还需要浏览器驱动,使用什么浏览器就去下载什么浏览器的驱动,这里使用的是谷歌浏览器作为所以需要下载谷歌浏览器的驱动包

谷歌驱动下载地址:https://npm.taobao.org/mirrors/chromedriver

下载驱动时要注意要下载和我们使用浏览器版本一致的浏览器驱动

哪里可以查询我们浏览器的版本呢,如下图所示

注意:如果在下载驱动时发现,没有和浏览器对应的版本,那么就找跟自己浏览器最接近并且版本低于自己浏览器版本

驱动下载成功后,将驱动解压放在我们的python安装目录下,就此前期准备完成

1.2、分析

1.2.1、第一步

首先我们先打开王者荣耀官网,查看我们需要的海报在哪


所有我们需要找到 “更多” 的xpath路径


点击跳转

web.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div[2]/div[1]/a').click()

跳转之后可以进行我们的第二步操作了

1.2.2、第二步

进入更多页面查看元素

通过这可以发现每一个里标签都对应一个英雄,所以我们要把所有的li标签给拿到

list_li = web.find_elements_by_xpath('/html/body/div[3]/div/div/div[2]/div[2]/ul/li')

通过查看li标签可看出,我们需要的海报在每个英雄的页面,所以我们需要拿到英雄页面,
要拿到英雄页面的地址,我们需要先找到英雄页面的xpath路径

拿取所有英雄页面地址

for li in list_li:
    hero_name = li.find_element_by_tag_name("a").text
    hero_a = li.find_element_by_xpath("./a")   # ./表示从li标签开始
    hero_href = hero_href.get_attribute("href")  # 拿出a标签中href属性值

拿到所有的href路径之后,可以进行我们的第三步操作

1.2.3、第三步

拿到了所有英雄页面地址后,进入之后查看源码,可以看到存在海报信息

所以进入子页面的方式就改成了requests的方式进入然后拿取源码

拿到源码之后通过bs4方式拿到这个海报地址

	hero_page = requests.get(hero_href.get_attribute("href"))
    hero_page.encoding="gbk"  # 因为页面为gbk编码所有改为gbk
    page = BeautifulSoup(hero_page.text,  "html.parser")  # 拿取页面
    a = page.find("a", class_="hero-video")  # bs64解析页面
    img = a.find("img")
    img_src = img.get_attribute_list("src")[0]
    img_src = img_src.replace("//", "https://")  # 拿到海报地址

拿到海报地址之后我们就能进行下载了,至此我们拿到了需要的东西,接下来上代码

1.3、源代码

from selenium.webdriver import Chrome
import requests
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options

opt = Options()  # 因为selenium会打开页面,设置这个可以不打开页面
opt.add_argument("--headless")
opt.add_argument("--disable-gpu")

web = Chrome(options=opt)
web.get("https://pvp.qq.com/")
web.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div[2]/div[1]/a').click()
web.switch_to.window(web.window_handles[-1])
list_li = web.find_elements_by_xpath('/html/body/div[3]/div/div/div[2]/div[2]/ul/li')
for li in list_li:
    hero_name = li.find_element_by_tag_name("a").text
    hero_href = li.find_element_by_xpath("./a")
    hero_page = requests.get(hero_href.get_attribute("href"))
    hero_page.encoding="gbk"
    page = BeautifulSoup(hero_page.text,  "html.parser")
    a = page.find("a", class_="hero-video")
    img = a.find("img")
    img_src = img.get_attribute_list("src")[0]
    img_src = img_src.replace("//", "https://")
    hero_resp = requests.get(img_src)
    with open("王者荣耀/"+hero_name+".jpg", mode="wb") as f:
        f.write(hero_resp.content)
    print(hero_name+" 下载成功!!!")
print("全部下载完成!!!")

1.4、运行结果


磁盘中查看文件

至此,使用Selenium搞定王者荣耀英雄海报的下载就完成了

以上是关于selenium自动获取王者荣耀英雄海报并保存到本地的主要内容,如果未能解决你的问题,请参考以下文章

selenium自动获取王者荣耀英雄海报并保存到本地

Matlab爬虫获取王者荣耀英雄皮肤

12.奇怪知识 --Matlab爬虫获取王者荣耀英雄皮肤

Python爬取王者荣耀官网,实现一对一下载软件!

Python-王者荣耀自动刷金币+爬取英雄信息+图片

教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)