Ошибка: PermissionError: [Errno 13] Permission denied
Я сделал скрипт по парсингу картинок с сайта, у меня в рабочей папке создана папка "Картинки", хочу чтобы туда выгружались картинки, но вылезает ошибка
File "123.py", line 43, in safe_image
with open(path, 'bw') as file:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\musix\\Desktop\\Работа\\ПТК\\Картинки'
Код:
import requests
from bs4 import BeautifulSoup
import csv
import os
URL = 'https://ptk-svarka.ru/catalog/apparaty-poluavtomaticheskoy-svarki-mig'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'accept': '*/*'}
FILE = 'svarka.csv'
def get_html(url, params=None):
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_image(html):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='b-grid__item js-product-item')
image = []
for item in items:
image.append(
item.find('img', class_='lozad').get('data-src')
)
return image
def get_folder(img):
folder = 'Картинки'
path = os.path.abspath(folder)
return path
def safe_image(path, img):
with open(path, 'bw') as file:
for chunk in img.item_content(8192):
file.write(chunk)
def parse():
URL = input('Введите URL: ')
URL = URL.strip()
html = get_html(URL)
if html.status_code == 200:
img = get_image(html.content)
path = get_folder(img)
safe_image(path, img)
print(img)
else:
print('Error')
parse()
Ответы (1 шт):
Автор решения: D. Violet
→ Ссылка
import uuid
import requests
from bs4 import BeautifulSoup
# URL = 'https://ptk-svarka.ru/catalog/apparaty-poluavtomaticheskoy-svarki-mig'
HEADERS = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'accept': '*/*'}
FILE = 'svarka.csv'
def get_image(html):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='b-grid__item js-product-item')
image = []
for item in items:
image.append(
item.find('img', class_='lozad').get('data-src')
)
return image
def parse():
URL = input('Введите URL: ')
html = requests.get(URL, headers=HEADERS)
if html.status_code == 200:
img = get_image(html.content)
for i in img:
with open('Картинки/' + str(uuid.uuid4()) + '.jpg', 'wb') as file:
for chunk in requests.get(i):
file.write(chunk)
else:
print('Error')
parse()