鱼C论坛

 找回密码
 立即注册
查看: 2282|回复: 21

[已解决]用selenium爬取王者荣耀图片

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

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

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

x
本帖最后由 python小小白哟 于 2023-8-16 14:55 编辑
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import time

browser = webdriver.Edge()
browser.get("https://pvp.qq.com/web201605/herolist.shtml")
b = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a//img")
for x in b:
    c = x.get_attribute("src")
    a = requests.get(c)
    dd = a.content
    for i in range(1,116):
        with open(f"{i}.jpg","wb") as file:
            file.write(dd)
            print("正在爬取中...")
print("爬取成功!")
time.sleep(10)

    with open(f"/王者荣耀英雄图片/{i}.jpg","wb") as file:
FileNotFoundError: [Errno 2] No such file or directory: '/王者荣耀英雄图片/1.jpg'
为什么会报这个错误呢?


现在是逻辑错误了.
爬是能爬了
微信截图_20230816144953.jpg


最佳答案
2023-8-16 17:05:36
python小小白哟 发表于 2023-8-16 17:05
Traceback (most recent call last):
  File "E:\python\pythonProject\爬虫.py", line 133, in
    b ...
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests

browser = webdriver.Edge()

browser.get("https://pvp.qq.com/web201605/herolist.shtml")
b = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a//img")
q = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a")
i = 1
for x in b:
    c = x.get_attribute("src")
    print(c)
    a = requests.get(c)
    dd = a.content
    bbc = q[i - 1].text
    with open(f"王者荣耀英雄图片/{bbc}.jpg","wb") as file:
        file.write(dd)
        print("正在爬取中...")
    i += 1
print("爬取成功!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-16 12:01:51 | 显示全部楼层
这个错误是因为指定的文件夹路径不存在。在代码中,你尝试将图片保存到一个名为"/王者荣耀英雄图片/"的文件夹中,但实际上该文件夹并不存在。

解决这个问题的方法是确保指定的文件夹存在。你可以使用Python的os模块来创建文件夹,如下所示:
import os

folder_path = "/王者荣耀英雄图片/"
os.makedirs(folder_path, exist_ok=True)

在这个例子中, os.makedirs() 函数将创建指定路径的文件夹。 exist_ok=True 参数将确保如果文件夹已经存在,不会引发错误。

将上述代码添加到你的程序中,确保文件夹存在后,你就不会再遇到"FileNotFoundError"错误了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 12:06:14 | 显示全部楼层
没有创建文件夹,所以 Python 就找不到路径,就无法写入了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 14:50:55 | 显示全部楼层
歌者文明清理员 发表于 2023-8-16 12:06
没有创建文件夹,所以 Python 就找不到路径,就无法写入了

你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 14:59:11 | 显示全部楼层
isdkz 发表于 2023-8-16 12:01
这个错误是因为指定的文件夹路径不存在。在代码中,你尝试将图片保存到一个名为"/王者荣耀英雄图片/"的文件 ...

你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 14:59:13 | 显示全部楼层
python小小白哟 发表于 2023-8-16 14:50
你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢?
from selenium.webdrvier import *
import requests
driver = Edge()
elements = driver.get_elements(By.CSS_SELECTOR, ".herolist.clearfix img")
i = 1
for element in elements:
    url = "https://pvp.qq.com" + element.get_attibute("src")
    with open(f"/王者荣耀英雄图片/{i}.jpg", "wb" as f:
        f.write(requests.get(url).content)
    i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 15:02:10 | 显示全部楼层
python小小白哟 发表于 2023-8-16 14:50
你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢?

第13行去掉,14-16行减少一个缩进,然后在设置变量i,你这是对一张图片写入了116次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 15:05:01 | 显示全部楼层
python小小白哟 发表于 2023-8-16 14:59
你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢?
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import time
browser = webdriver.Edge()
# print(1)
browser.get("https://pvp.qq.com/web201605/herolist.shtml")
b = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a//img")
i = 1
for x in b:
    c = x.get_attribute("src")
    print(c)
    a = requests.get(c)
    dd = a.content
    with open(f"{i}.jpg","wb") as file:
        file.write(dd)
        print("正在爬取中...")
    i += 1
print("爬取成功!")
# time.sleep(10)
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 15:12:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我没抄,我自己写的,食不食油饼?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 15:31:50 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-16 15:19
我没抄,我自己写的,食不食油饼?

对不起,看错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 15:39:18 | 显示全部楼层

没关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 16:59:24 | 显示全部楼层

你好,我想把这个爬下来的英雄名字作为文件名称使用,我的代码如下:请问该怎么改呢?
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests

browser = webdriver.Edge()

def get_name():
    browser.get("https://pvp.qq.com/web201605/herolist.shtml")
    a = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a")
    return a

browser.get("https://pvp.qq.com/web201605/herolist.shtml")
b = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a//img")
i = 1
for x in b:
    c = x.get_attribute("src")
    print(c)
    a = requests.get(c)
    dd = a.content

    asc = get_name()
    for sss in asc:
        bbc = sss.text
    with open(f"王者荣耀英雄图片/{bbc}.jpg","wb") as file:
        file.write(dd)
        print("正在爬取中...")
    i += 1
print("爬取成功!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 17:02:39 | 显示全部楼层
本帖最后由 学习编程中的Ben 于 2023-8-16 17:05 编辑
python小小白哟 发表于 2023-8-16 16:59
你好,我想把这个爬下来的英雄名字作为文件名称使用,我的代码如下:请问该怎么改呢?

from selenium import webdriver
from selenium.webdriver.common.by import By
import requests

browser = webdriver.Edge()

browser.get("https://pvp.qq.com/web201605/herolist.shtml")
b = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a//img")
q = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a")
i = 1
for x in b:
    c = x.get_attribute("src")
    print(c)
    a = requests.get(c)
    dd = a.content
    bbc = q[i - 1].txt
    with open(f"王者荣耀英雄图片/{bbc}.jpg","wb") as file:
        file.write(dd)
        print("正在爬取中...")
    i += 1
print("爬取成功!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 17:02:53 | 显示全部楼层
你先试试,我不确定可以哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 17:05:09 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-16 17:02
你先试试,我不确定可以哈

Traceback (most recent call last):
  File "E:\python\pythonProject\爬虫.py", line 133, in <module>
    bbc = a[i - 1]
TypeError: 'Response' object is not subscriptable


报这个错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 17:05:36 | 显示全部楼层    本楼为最佳答案   
python小小白哟 发表于 2023-8-16 17:05
Traceback (most recent call last):
  File "E:\python\pythonProject\爬虫.py", line 133, in
    b ...
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests

browser = webdriver.Edge()

browser.get("https://pvp.qq.com/web201605/herolist.shtml")
b = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a//img")
q = browser.find_elements(By.XPATH, "//html//body//div//div//div//div//div//ul//li//a")
i = 1
for x in b:
    c = x.get_attribute("src")
    print(c)
    a = requests.get(c)
    dd = a.content
    bbc = q[i - 1].text
    with open(f"王者荣耀英雄图片/{bbc}.jpg","wb") as file:
        file.write(dd)
        print("正在爬取中...")
    i += 1
print("爬取成功!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 17:06:49 | 显示全部楼层
因该可以了,别忘记给一个最佳答案啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 17:07:09 | 显示全部楼层

好的  感谢   我还是喜欢自己的代码  我再研究研究我自己的代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 17:08:34 | 显示全部楼层
python小小白哟 发表于 2023-8-16 17:07
好的  感谢   我还是喜欢自己的代码  我再研究研究我自己的代码。

你的代码是有很大的问题的,我那样改已经是最接近你的代码得了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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