Я нашел этот пост и хотел немного изменить скрипт для загрузки изображений в определенную папку. Мой отредактированный файл выглядит так:
import re
import requests
from bs4 import BeautifulSoup
import os
site = 'http://pixabay.com'
directory = "pixabay/" #Relative to script location
response = requests.get(site)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
urls = [img['src'] for img in img_tags]
for url in urls:
#print(url)
filename = re.search(r'/([\w_-]+[.](jpg|gif|png))$', url)
with open(os.path.join(directory, filename.group(1)), 'wb') as f:
if 'http' not in url:
url = '{}{}'.format(site, url)
response = requests.get(url)
f.write(response.content)
Похоже, что это нормально работает для pixabay , но если я попробую другой сайт, например imgur или heroimages , похоже, он не будет работать.
Если я заменю декларацию сайта на
site = 'http://heroimages.com/portfolio'
ничего не загружается. Оператор print (когда он не прокомментирован) ничего не печатает, так что я предполагаю, что он не находит никаких тегов изображения? Я не уверен.
С другой стороны, если я заменю сайт на
site = 'http://imgur.com'
Иногда я получаю
AttributeError: 'NoneType' object has no attribute 'group'
или, если изображения действительно загружаются, я даже не могу открыть их, потому что я получаю следующую ошибку:
Также стоит отметить, что сейчас сценарию требуется папка, указанная в каталоге, для существования. Я планирую изменить его в будущем, чтобы скрипт создавал каталог, если он еще не существует.