Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2022, 01:09   #1
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию Как создать папки для картинок сохраняя вложенность такую же как на сайте?

Здравствуйте, с помощью Python, я выгружаю картинки в папку. Потом заменяю пути и сохраняю все это в html документ, это нужно для того, чтобы при открытии документа у меня на компьютере отображались все загруженные изображение и тут я столкнулась с ситуацией, что при выгрузки картинок с разных страниц они могут повторяться, если попадут в одну папку.

Подскажите пожалуйста как создать вложенные папки как с выгружаемого сайта. Например есть страница. https://oddstyle.ru/wordpress-2/wordpress-plaginy. Если посмотреть путь у атрибута img src;

https://oddstyle.ru/wp-content/uploa...lr-770x330.jpg, т.е. здесь мы видим несколько папок.
  1. wp-content
  2. uploads
  3. 2022-06-21
  4. 06
  5. и название картинки tumblr-770x330.jpg.

Нужно как-то проверить перед выгрузкой существует данный путь у меня в каталоге data2, если нет то создать эти папки сохраняя вложенность потом произвести выгрузку img. Во избежание повторов, сохранить оригинальное имя файла. Как это можно сделать?

У меня уже подготовлен код который делает выгрузку сохраняет картинки и заменяет пути.

Код:


import requests
from bs4 import BeautifulSoup

import lxml


url = "https://oddstyle.ru/wordpress-2/wordpress-plaginy"

headers = {
  "Accept":"*/*",
  "User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
}




req = requests.get(url, headers=headers)
src = req.text


soup = BeautifulSoup(src,"lxml")

content = soup.find("main",class_="site-main")


article = content.find_all("article",{"class":"post"})


count = 1
for item in article:
  link = item.find("img").attrs.get('src')
  image_data = requests.get(link)
  f_path = f"data2/images/{count}.jpg"
  with open(f_path, 'wb') as f:
    f.write(image_data.content)
  item.find("img").attrs["src"] = f"images/{count}.jpg"
  item.find("img").attrs["srcset"] = f"images/{count}.jpg"
  print(f"data2/images/{count}.jpg")
  count+=1
  


with open("data2/main1.html") as file:
  html = file.read()
html2 = eval(f'f"""{html}"""')



with open('data2/main.html', 'w') as f:
  f.write(html2)
Шаблон main1.html который загружается извне, дальше происходи перезапись с тегом {content} в новый файл main.html:
Код:
<!DOCTYPE html> 
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Название</title>
</head>
<body>
<h1>Название</h1>
{content}
</body>
 
</html>

Последний раз редактировалось Катя93; 21.06.2022 в 01:16.
Катя93 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделайте такую программу (копирования файлов из одной папки в другую) Syns1992 Общие вопросы Delphi 32 04.08.2018 08:33
Возможно ли написать такую программу (отслеживание данных на сайте) Andrey0001 Фриланс 15 06.04.2016 11:08
Импорт картинок из папки в текст WORD 2007 макросом hlibhlib Microsoft Office Word 8 18.02.2014 19:54
Просмотр картинок из папки Elementery Общие вопросы Delphi 5 25.05.2010 17:06
загрузка картинок из папки firmwares Мультимедиа в Delphi 7 28.01.2010 01:13