鱼C论坛

 找回密码
 立即注册
查看: 2106|回复: 9

[已解决]爬取王者荣耀英雄图片的问题

[复制链接]
发表于 2023-8-16 10:12:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么网站源码和右键元素不一样呢?
我用PyQuery只能获取从 云中君 开始这个英雄的图标
好像是这样的我的代码中只包含这个英雄 云中君 开始的数据所以只能从这个英雄开始爬取图片。

微信截图_20230816100227.jpg
微信截图_20230816100242.jpg

然而我想爬取所有的图片该怎么办呢?

代码如下:
import requests
from pyquery import PyQuery

html = requests.get("https://pvp.qq.com/web201605/herolist.shtml").content
doc = PyQuery(html)

items = doc('.herolist > li ').items()
for item in items:
    url = item.find('img').attr('src')
    urls = 'https:' + url
    name = item.find('a').text()
    url_content = requests.get(urls).content
    with open("./王者荣耀英雄图片/" + name + '.jpg','wb') as file:
        file.write(url_content)
        print("正在爬取图片中...")


最佳答案
2023-8-16 10:36:57

配置教程:https://blog.csdn.net/zhoukeguai/article/details/113247342
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://pvp.qq.com/web201605/herolist.shtml")
sleep(1) # 等待js加载
source = driver.page_source
driver.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-16 10:13:02 | 显示全部楼层
问题出在你只获取了一个英雄的图标,因为你只遍历了 .herolist > li 中的元素,而这些元素只是英雄列表中的一部分。要获取所有英雄的图片,你需要遍历所有的英雄列表。

你可以通过以下代码修改你的程序来实现获取所有英雄的图片:
import requests
from pyquery import PyQuery

html = requests.get("https://pvp.qq.com/web201605/herolist.shtml").content
doc = PyQuery(html)

items = doc('.herolist > li').items()
for item in items:
    url = item.find('img').attr('src')
    urls = 'https:' + url
    name = item.find('a').text()
    url_content = requests.get(urls).content
    with open("./王者荣耀英雄图片/" + name + '.jpg','wb') as file:
        file.write(url_content)
    print("正在爬取图片中...")

这样,你就可以获取所有英雄的图片了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 10:16:23 | 显示全部楼层
isdkz 发表于 2023-8-16 10:13
问题出在你只获取了一个英雄的图标,因为你只遍历了 .herolist > li 中的元素,而这些元素只是英雄列表中的 ...

代码好像和我原来的那个没有改动啊?这怎么行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 10:27:20 | 显示全部楼层
右键看到的是执行过js的结果,ctrl+u是没执行过js的,所以不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 10:30:03 | 显示全部楼层
歌者文明清理员 发表于 2023-8-16 10:27
右键看到的是执行过js的结果,ctrl+u是没执行过js的,所以不一样

有没有办法从开头的英雄图片爬取呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 10:34:23 | 显示全部楼层
python小小白哟 发表于 2023-8-16 10:30
有没有办法从开头的英雄图片爬取呢?

那就得用 selenium 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 10:35:22 | 显示全部楼层

好的  感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 10:36:57 | 显示全部楼层    本楼为最佳答案   

配置教程:https://blog.csdn.net/zhoukeguai/article/details/113247342
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://pvp.qq.com/web201605/herolist.shtml")
sleep(1) # 等待js加载
source = driver.page_source
driver.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 11:01:40 | 显示全部楼层
pvp.qq.com/web201605/js/herolist.json里就是name和ename
game.gtimg.cn/images/yxzj/img201606/heroimg/{ename}/{ename}.jpg替换进去就是图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 12:19:10 | 显示全部楼层

爬王者荣耀完全可以用requests
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 01:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表