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

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

1.1、前期准备

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

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

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

哪里可以查询我们浏览器的版本呢,如下图所示
版本号
注意:如果在下载驱动时发现,没有和浏览器对应的版本,那么就找跟自己浏览器最接近并且版本低于自己浏览器版本

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

1.2、分析

1.2.1、第一步

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

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

找到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路径
li
拿取所有英雄页面地址

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搞定王者荣耀英雄海报的下载就完成了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值