¿Cómo puedo abrir todos los enlaces y guardar las imágenes en una carpeta en un directorio específico en mi PC?
Código:
import urllib.request
from bs4 import BeautifulSoup
from requests import get
import requests
import dload
import pandas as pd
pd.set_option('display.max_colwidth', None)
week11picURL = "https://www.packers.com/photos/game-photos-packers-at-vikings-week-11-2021#9258618e-e793-41ae-8d9a-d3792366dcbb"
response = get(week11picURL)
print(response)
htmlpage = requests.get(week11picURL)
soup = BeautifulSoup(htmlpage.content, 'html.parser')
image = soup.findAll('div', class_="nfl-c-photo-album_picture-wrapper")
data = []
for x in soup.select('.nfl-c-photo-album__picture-wrapper picture source:first-child'):
try:
data.append(x['srcset'].split(',')[0])
except:
data.append(x['data-srcset'].split(',')[0])
data
testurl = "https://static.clubs.nfl.com/image/private/tnewphotoalbum/f_auto/packers/f6jcqnmhbzs2dyvepa8z.jpg"
df = pd.DataFrame(data)
replace = df.replace(["/t_lazy", "1x"], "", regex=True)
folder = "f:/nfl pics/packers/week 11 - at vikings"
save = dload.save_multi(url_list=replace[0].tolist(), dir=folder, max_threads=1, tsleep=0.05)
Datos sustituidos:
0
0 https://static.clubs.nfl.com/image/private/t_new_photo_album/f_auto/packers/hjmcucejx2vmfshjkdkj.jpg
1 https://static.clubs.nfl.com/image/private/t_new_photo_album/f_auto/packers/rgsvjp6sxu89ditolacv.jpg
2 https://static.clubs.nfl.com/image/private/t_new_photo_album/f_auto/packers/zsogvqrqgaauqcdgejde.jpg
3 https://static.clubs.nfl.com/image/private/t_new_photo_album/f_auto/packers/jyegqthuab2hsuygirqp.jpg
4 https://static.clubs.nfl.com/image/private/t_new_photo_album/f_auto/packers/kwsq1fvn41f6kzqo4nkl.jpg
etc.
El error que obtengo al usar mi función “save” es:
Traceback (most recent call last):
File "ubicación", line 174, in save_multi
with open(url_list) as f:
TypeError: expected str, bytes or os.PathLike object, not DataFrame
Estoy tratando de encontrar una forma de abrir automáticamente todos los enlaces de los datos en “replace” y guardar las imágenes respectivas en el directorio etiquetado como “folder”. Cuando intento usar mi función “save”, obtengo el error anterior. ¿Cómo resuelvo este problema o hay una forma más eficiente de hacerlo?
davy.ai
El problema es que la función “dload.save_multi()” espera como primer argumento una lista de URLs, pero en su lugar se está pasando un DataFrame de pandas.
Para solucionar esto, se pueden extraer las URLs del DataFrame y convertirlas en una lista antes de pasarlas a la función “dload.save_multi()”.
Aquí está el código actualizado:
Este código debería funcionar correctamente para descargar todas las imágenes de las URLs en la variable “replace” y guardarlas en el directorio “folder”.