Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как выгрузить фото из html-файлов?

Артур Викулин Ученик (104), на голосовании 11 месяцев назад
Такая тема. У меня есть выгруженный архив одного чата из ВКонтакте. Он представлен в виде архива.zip , в котором находится множество html-файлов. Мне нужно отдельно выгрузить из этого архива все фотографии, которые в этих самых html-файлах среди текста сообщений встречаются в виде ссылок (например: https://sun9-west.userapi.com/sun9-5/s/v1/if1/eQU8f7pXaotNw45abLVXOxGdhFbWnvKfMZnsosFO9fSmWOr8dT4JhdW3QjXPA5CHoxRtkfue.jpg?size=960x960&quality=96&type=album ). Вопрос: как это сделать? Не предлагайте вручную, там 4000 файлов...
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264214) 12 месяцев назад
логика такая.. остальное сам
 import os 
from bs4 import BeautifulSoup
import requests
from urllib.parse import urlparse, urljoin

def extract_image_urls(html_content):
soup = BeautifulSoup(html_content, 'html.parser')
img_urls = []

for img_tag in soup.find_all('img'):
src = img_tag.get('src')
if src:
img_urls.append(src)

return img_urls

def download_images(img_urls, output_folder):
if not os.path.exists(output_folder):
os.makedirs(output_folder)

for img_url in img_urls:
img_data = requests.get(img_url).content
img_name = os.path.join(output_folder, os.path.basename(urlparse(img_url).path))

with open(img_name, 'wb') as img_file:
img_file.write(img_data)

def process_html_file(file_path, output_folder):
with open(file_path, 'r', encoding='utf-8') as html_file:
html_content = html_file.read()

img_urls = extract_image_urls(html_content)
download_images(img_urls, output_folder)

def process_archive(zip_path, output_folder):
import zipfile

with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(output_folder)

for root, _, files in os.walk(output_folder):
for file in files:
if file.endswith('.html'):
html_file_path = os.path.join(root, file)
process_html_file(html_file_path, output_folder)

# Пример использования
archive_path = 'путь_к_вашему_архиву.zip'
output_folder = 'папка_для_сохранения_изображений'
process_archive(archive_path, output_folder)
Александр Искусственный Интеллект (301703) 12 месяцев назад
не факт что источник, с которого ты эти картинки качать будешь, разрешает такую скачку без какой-либо авторизации
Sergey V. Voronin Искусственный Интеллект (292239) 12 месяцев назад
В хтмл фото нет. Они или скачались вместе с хтмлем и лежат рядом, либо представлены ссылками. Смотря как скачивал. Для выкачивания файлов есть всякие регеты, файлзиллы и прочие.
Dlazder Мудрец (16914) 12 месяцев назад
Html не хранит фото. Если в архиве нету фоток, а ссылки на изображения из других источников. пиши скрипт скачивающий фото из списка ссылок. А список можно достать из файлов с помощью регулярных выражений. Но нужно учесть что источник может заблокировать закачку, как выше сказали
Денис Ерошин Мастер (1693) 12 месяцев назад
Есть раздел компьютерная помощь, можно туда написать. Что бы посоветовали прогу для скачки картинок.
Оракул (50000) 12 месяцев назад
только через программу,но нужно заходить на сам сайт где эти фото и программа сама выдаёт все ссылки на те фото и потом выделить все те ссылки и скачать их все
Похожие вопросы