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自动获取王者荣耀英雄海报并保存到本地的主要内容,如果未能解决你的问题,请参考以下文章