Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
383 / 23 / 2
Регистрация: 12.06.2021
Сообщений: 211
Записей в блоге: 2

Как заменить теги html и пересохранить документ?

29.05.2022, 14:18. Показов 1207. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю выгрузку страницы в формате html-документа, вытащила от туда только середину, где находится сама статья (остальное стили и js мне не нужны). Новый документ открыла и выгрузила все картинки. Решила выполнить replace для всех картинок в html документе и заменить их на свои (указав при этом другой путь), чтобы при открытии статьи html сразу отображались мои картинки. В итоге картинки извлекаются, а замена происходит только у последней картинки. Как это исправить? Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
print('Content-Type: text/html; charset=utf-8\n')
 
import requests
from bs4 import BeautifulSoup
import lxml
 
 
url = "<URL SITE>"
 
headers = {
  "",
  "User-Agent": ""
}
 
req = requests.get(url, headers=headers)
src = req.text
 
soup = BeautifulSoup(src,"lxml")
 
 
 
 
m1 = soup.find("div",{"main"})
story_main = m1.find("div",{"story__main"})
 
title = story_main.find("span",{"story__title-link"})
 
 
 
src = f"{story_main}"
 
 
html = f"""
<!DOCTYPE html> 
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>{title.text}</title>
</head>
 
<body>
 {src}
</body>
 
</html>
"""
 
 
print(title.text);
with open("data1/main1.html","w") as file:
  file.write(html)
 
with open("data1/main1.html") as file:
  src = file.read();
 
soup1 = BeautifulSoup(src,"lxml") 
 
im = soup1.find_all("div",class_={"story-image__content image-lazy"})
image_number = 1
for item in im:
  img = item.find("img").get("data-src")
  image_bytes=requests.get(f'{img}').content
  with open(f'image1/{image_number}.jpg','wb') as file:
    file.write(image_bytes) 
 #img1 - ДОБАВЛЕНО СПЕЦИАЛЬНО, ЧТОБЫ ПО ЭТОМУ ЯКОРЮ БЫСТРЕЕ НАЙТИ НУЖНОЕ МЕСТО
  html_code = src.__str__().replace(f'{item}', f'img1<img src="image1/{image_number}.jpg">')
  image_number += 1
  print(f'{image_number}  {img} save!')
print(img);
 
 
with open("data1/main2.html","w") as file:
  file.write(html_code)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2022, 14:18
Ответы с готовыми решениями:

Как html теги заменить на нормальные символы?
Мне нужно,чтобы из строки убирались html теги Например я хочу,чтобы &lt; преобразовывалось в &amp;lt;, &gt; в &amp;gt; пробую так,но не...

Как заменить все html теги в строке?
Всех приветствую. Я пытаюсь удалить все html теги из строки. Мой способ работает,кроме случая с вложенными тегами. Подскажите...

Как программно пересохранить word-овский документ в файл с расширением «.rtf»
Dim word = New Word.Application word.Documents.Open(&quot;\...\Doc1.doc&quot;) ...

2
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
30.05.2022, 00:06
Лучший ответ Сообщение было отмечено Olga28 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import requests
from bs4 import BeautifulSoup
 
url = "https://pikabu.ru/story/vebkam_dlya_kotikov_9150538"
 
headers = {
    "user-agent": "..."
}
 
req = requests.get(url, headers=headers)
soup = BeautifulSoup(req.text, "lxml")
 
article = soup.select_one('div.main div.page-story__story div.story__content-inner')
title = soup.select_one('h1.story__title')
figures = article.select('figure')
 
for idx, figure in enumerate(figures, 1):
    img = figure.select_one('img')
    link = img.attrs.get('data-src')
    image_data = requests.get(link)
    
    f_path = f'images/img{idx}.jpg'
    with open(f_path, 'wb') as f:
        f.write(image_data.content)
    img.attrs['src'] = f_path
 
    # remote square
    figure.select_one('svg').decompose()
 
html = f"""<!DOCTYPE html> 
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>{title.text}</title>
</head>
 
<body>
<h1>{title.text}</h1>
{article}
</body>
 
</html>
"""
 
with open('main.html', 'w') as f:
    f.write(html)
1
383 / 23 / 2
Регистрация: 12.06.2021
Сообщений: 211
Записей в блоге: 2
30.05.2022, 21:11  [ТС]
Работает, спасибо, а то уже перепробовала много разных вариантов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2022, 21:11
Помогаю со студенческими работами здесь

Заменить теги в HTML-файле.
Добрый день форумчане, помогите нубу. Код за меня не прошу писать, ну разве что, у вас завалялся похожий пример. У меня трудности с...

Заменить теги HTML другими тегами используя регулярные выражения
Доброе время суток. Подскажите пожалуйста, желательно с примером, как заменить теги HTML другими тегами с помощью регулярных выражений?...

Заменить в тексте, вводимым пользователем, все HTML-сущности, исключая HTML5-теги
Доброе время суток!) надо заменить в тексте вводимый пользователем все html сущности, но при этом не надо затрагивать теги (html5), гаглил...

Переместить вторую строку влево, Чтобы первая была по середине и заменить теги html на html5
&lt;html xmlns&gt; &lt;head&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt; &lt;title&gt;&lt;/title&gt; &lt;link href=&quot;default.css&quot;...

как ??? В файле 1.html создать ссылку на документ 3.html. Данная ссылка должна отображаться во втором фрейме.
код с фреймами: &lt;html&gt; &lt;head&gt; &lt;/head&gt; &lt;frameset rows=&quot;30%,*&quot;&gt; &lt;frameset cols=&quot;50%,*&quot;&gt; &lt;frame name=&quot;Dwa&quot; src=&quot;2.html&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru