@DarkwingDuck48
Самостоятельно постигаю программирование на Python

Можно ли сохранить изменения в BeautifulSoup?

Дано:
Сохраненная копия книги (в формате html), скаченная года 3-4 назад. Все ссылки в каждом файле не рабочие(например, есть файл ,описывающий содержание книги, все переходы в нем ведут на сайт, который выдает 404). Однако, нужные страницы сохранены, вместе со все контентом.
Нужно:
Исправить все битые ссылки на ссылки к локальным файлам. Ручками делать долго и, если честно, лениво. Решил попробовать парсить эти страницы и по ходу менять неправильные ссылки на правильные.
Написал код на Python 3.5:
from bs4 import BeautifulSoup

file = open(path_to_file, "r+")
soup = BeautifulSoup(file,"lxml")
links = soup.find_all("a")
images = soup.find_all("img")
print(path_to_file)
for link in links:
    print(link['href'])
for image in images:
    if image['src'] == "wrong_link":
        image['src'] = "Changed"
        print(image['src'])
file.close()

При выводе в консоль Питона все замечательно, все меняется. Однако при просмотре файла, он остается прежним. Можно ли как то сохранить изменения в тот же файл?
Если это важно, то ОС Windows 7.
  • Вопрос задан
  • 576 просмотров
Пригласить эксперта
Ответы на вопрос 2
@DarkwingDuck48 Автор вопроса
Самостоятельно постигаю программирование на Python
Нашел способ, как сохранять имена файлов. Надеюсь, что кому то пригодится.
file = open(path_to_file, "r+")
soup = BeautifulSoup(file, "lxml")
links = soup.find_all("a")
images = soup.find_all("img")
file2 = open(path_to_file, "w+", encoding='utf-8')
file2.write(soup.prettify())
file2.close()
Ответ написан
Комментировать
sim3x
@sim3x
Нет
Нужно записывать изменения в новый файл
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы