html2text или html2md

NubvPython

Новичок
Пользователь
Сен 19, 2022
6
0
1
Помогите, пожалуйста
Стоит задача конвертировать 1300+ файлов html (каждый файл это страница сайта) в отдельный файл markdown.
Я нашла способ конвертировать всего по 1 файл за раз, что отнимает уйму времени и абсолютно бессмысленно.

Python:
import html2text as ht
import os
import sys
from pathlib import Path
text_maker = ht.HTML2Text()
with open('/Users/Desktop/example.com/Только файлы HTML/index.html','r',encoding='UTF-8') as f:
    htmlpage = f.read()
text = text_maker.handle(htmlpage)
with open('/Users/Desktop/example.com/Только файлы HTML/index.md','w') as f:
    f.write(text)

Все 1300+ файлов находятся в одном каталоге (папке) на рабочем столе. Как написать код так, чтобы программа брала любой файл с расширением имени файла .html в каталоге и конвертировала его сразу в .md, сохраняя файл например в этот же каталог?

Также находила код, который выписывает все файлы .html, которые находятся в одном каталоге. Но что мне дальше с выведенным списком делать не знаю. Не знаю как совместить два кода. А может их и не нужно совмещать.

Python:
import os
dir = "/Users/Desktop/example.com/Только файлы HTML"
for i in os.walk(dir):
    for i2 in i[2]:
        if i2.endswith(".html"):
            print(i[0] + "/" + i2)

Работаю на iOS.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 049
346
83
записываете в массив все пути, циклом пробегаете его и делаете манипуляции из первого кода с каждым файлом
 

NubvPython

Новичок
Пользователь
Сен 19, 2022
6
0
1
Не могли бы вы, пожалуйста, написать код того, что вы описали? Я второй день занимаюсь Phyton, и очень сложно понять. А задача срочная. Пожалуйста🙏🙏🙏
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 049
346
83
Не могли бы вы, пожалуйста, написать код того, что вы описали? Я второй день занимаюсь Phyton, и очень сложно понять. А задача срочная. Пожалуйста🙏🙏🙏
ну как то так, пути только свои подставьте
Python:
import os
import html2text as ht


directory = "d:/test"
lst_path = []
for i in os.walk(directory):
    for i2 in i[2]:
        if i2.endswith(".html"):
            lst_path.append(i[0] + "/" + i2)

text_maker = ht.HTML2Text()
for i in lst_path:
    with open(i, 'r') as f:
        htmlpage = f.read()
    text = text_maker.handle(htmlpage)
    with open(f'{i}.md', 'w') as f:
        f.write(text)
 

NubvPython

Новичок
Пользователь
Сен 19, 2022
6
0
1
ну как то так, пути только свои подставьте
Python:
import os
import html2text as ht


directory = "d:/test"
lst_path = []
for i in os.walk(directory):
    for i2 in i[2]:
        if i2.endswith(".html"):
            lst_path.append(i[0] + "/" + i2)

text_maker = ht.HTML2Text()
for i in lst_path:
    with open(i, 'r') as f:
        htmlpage = f.read()
    text = text_maker.handle(htmlpage)
    with open(f'{i}.md', 'w') as f:
        f.write(text)
Спасибо огромное!!!!!
 

NubvPython

Новичок
Пользователь
Сен 19, 2022
6
0
1
Bpdbyb
ну как то так, пути только свои подставьте
Python:
import os
import html2text as ht


directory = "d:/test"
lst_path = []
for i in os.walk(directory):
    for i2 in i[2]:
        if i2.endswith(".html"):
            lst_path.append(i[0] + "/" + i2)

text_maker = ht.HTML2Text()
for i in lst_path:
    with open(i, 'r') as f:
        htmlpage = f.read()
    text = text_maker.handle(htmlpage)
    with open(f'{i}.md', 'w') as f:
        f.write(text)
Извините, что опять надоедаю. У меня почему-то не выполняется код. И ошибка не пишется, но и ничего не просиходит. Я правильно понимаю, что мне только нужно в этом месте dir = "d:/test" добавить путь к папке (ну понятно дело вместо d:/test), в которой у меня находятся все .html документы? Или где-то еще нужно что-то добавить/заменить?
Также пыталась найти информацию о том, что означает lst_path = [], но нигде (даже на гитхабе) не смогла почему-то найти об этом ничего:с
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 049
346
83
Я правильно понимаю, что мне только нужно в этом месте dir = "d:/test" добавить путь к папке (ну понятно дело вместо d:/test), в которой у меня находятся все .html документы? Или где-то еще нужно что-то добавить/заменить?
да верно, и не dir, а directory
dir - это зарезервированное слово в питоне, оно есть в стандартной библиотеке, переопределив его вы можете получить неопределенное поведение...

Также пыталась найти информацию о том, что означает lst_path = [], но нигде (даже на гитхабе) не смогла почему-то найти об этом ничего:с
это, конечно, интересно, что вы пытаетесь найти базовые вещи...
это определение списка (массива) в питоне...

покажите код, который запускаете?
и скиньте пару файлов своих
 

NubvPython

Новичок
Пользователь
Сен 19, 2022
6
0
1
да верно, и не dir, а directory
dir - это зарезервированное слово в питоне, оно есть в стандартной библиотеке, переопределив его вы можете получить неопределенное поведение...


это, конечно, интересно, что вы пытаетесь найти базовые вещи...
это определение списка (массива) в питоне...

покажите код, который запускаете?
и скиньте пару файлов своих
Python:
import os
import html2text as ht


directory = "/Users/anastasiabirukova/Desktop/www.seobythesea.com — копия/Только файлы HTML"
lst_path = []
for i in os.walk(directory):
    for i2 in i[2]:
        if i2.endswith(".html"):
            lst_path.append(i[0] + "/" + i2)

text_maker = ht.HTML2Text()
for i in lst_path:
    with open(i, 'r') as f:
        htmlpage = f.read()
    text = text_maker.handle(htmlpage)
    with open(f'{i}.md', 'w') as f:
        f.write(text)

Файлы .html сюда не получается прикрепить. Я могу вам скинуть где-нибудь в другом месте, например в телеграме.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 049
346
83
ну давайте в телеграмме, хорошо, @regnorr
 

NubvPython

Новичок
Пользователь
Сен 19, 2022
6
0
1
Правильный код, составленный @regnor, для конвертации сразу множества файлов .html в файлы .md:
Python:
import os
import html2text as ht

directory = "d:/test"
lst_path = []
for i in os.walk(directory):
    for i2 in i[2]:
        if i2.endswith(".html"):
            lst_path.append(i[0] + "/" + i2)

text_maker = ht.HTML2Text()
for i in lst_path:
    with open(i, 'r', encoding="utf-8") as f:
        htmlpage = f.read()
    text = text_maker.handle(htmlpage)
    with open(f'{i}.md', 'w') as f:
        f.write(text)

Надеюсь, кому-то будет полезно!
 

Форум IT Специалистов