用selenium爬取王者荣耀图片
本帖最后由 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: No such file or directory: '/王者荣耀英雄图片/1.jpg'
为什么会报这个错误呢?
现在是逻辑错误了.
爬是能爬了
这个错误是因为指定的文件夹路径不存在。在代码中,你尝试将图片保存到一个名为"/王者荣耀英雄图片/"的文件夹中,但实际上该文件夹并不存在。
解决这个问题的方法是确保指定的文件夹存在。你可以使用Python的os模块来创建文件夹,如下所示:
import os
folder_path = "/王者荣耀英雄图片/"
os.makedirs(folder_path, exist_ok=True)
在这个例子中, os.makedirs() 函数将创建指定路径的文件夹。 exist_ok=True 参数将确保如果文件夹已经存在,不会引发错误。
将上述代码添加到你的程序中,确保文件夹存在后,你就不会再遇到"FileNotFoundError"错误了。 没有创建文件夹,所以 Python 就找不到路径,就无法写入了 歌者文明清理员 发表于 2023-8-16 12:06
没有创建文件夹,所以 Python 就找不到路径,就无法写入了
你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢? isdkz 发表于 2023-8-16 12:01
这个错误是因为指定的文件夹路径不存在。在代码中,你尝试将图片保存到一个名为"/王者荣耀英雄图片/"的文件 ...
你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢? 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 python小小白哟 发表于 2023-8-16 14:50
你好,代码成功的运行了,但是爬取的都是同一张图片的不同名称,请问哪个地方逻辑错了呢?
第13行去掉,14-16行减少一个缩进,然后在设置变量i,你这是对一张图片写入了116次 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) 学习编程中的Ben 发表于 2023-8-16 15:05
抄作业可耻 歌者文明清理员 发表于 2023-8-16 15:12
抄作业可耻
我没抄,我自己写的,食不食油饼? 学习编程中的Ben 发表于 2023-8-16 15:19
我没抄,我自己写的,食不食油饼?
对不起,看错了 歌者文明清理员 发表于 2023-8-16 15:31
对不起,看错了
没关系{:10_282:} 学习编程中的Ben 发表于 2023-8-16 15:39
没关系
你好,我想把这个爬下来的英雄名字作为文件名称使用,我的代码如下:请问该怎么改呢?
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("爬取成功!") 本帖最后由 学习编程中的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.txt
with open(f"王者荣耀英雄图片/{bbc}.jpg","wb") as file:
file.write(dd)
print("正在爬取中...")
i += 1
print("爬取成功!") 你先试试,我不确定可以哈 学习编程中的Ben 发表于 2023-8-16 17:02
你先试试,我不确定可以哈
Traceback (most recent call last):
File "E:\python\pythonProject\爬虫.py", line 133, in <module>
bbc = a
TypeError: 'Response' object is not subscriptable
报这个错误 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.text
with open(f"王者荣耀英雄图片/{bbc}.jpg","wb") as file:
file.write(dd)
print("正在爬取中...")
i += 1
print("爬取成功!") 因该可以了,别忘记给一个最佳答案啊 学习编程中的Ben 发表于 2023-8-16 17:05
好的感谢 我还是喜欢自己的代码我再研究研究我自己的代码。 python小小白哟 发表于 2023-8-16 17:07
好的感谢 我还是喜欢自己的代码我再研究研究我自己的代码。
你的代码是有很大的问题的,我那样改已经是最接近你的代码得了
页:
[1]
2