Изменить html файл (найти и заменить href url и сохранить его) - PullRequest
0 голосов
/ 20 мая 2019

EDIT1:

Я обнаружил ошибку в исходном коде, которая выдала мне ошибку типа.Итак, ответ был здесь: BeautifulSoup - модифицировать все ссылки в куске HTML? .Теперь код работает.

У меня есть HTML-файл, я хочу изменить часть URL-адреса href для других и снова сохранить его в виде HTML-файла.Моя цель состоит в том, чтобы при открытии html-файла и нажатии на ссылку он переместил меня во внутреннюю папку, а не в URL-адрес в Интернете (исходный).

Я имею в виду, я хочу преобразовать это:<a href="http://www.somelink.com"> в это: <a href="C:/myFolder/myFile.html">.

Я пытался открыть файл с помощью bs4 и использовать функцию замены, но я получаю TypeError: 'NoneType' object is not callable

Это мой код:


# Dict which relates the original links with my the ones to replace them

links_dict = { original_link1 : my_link1 , original_link2 : my_link2 } # and so on..

# Get a list of links to loop and find them into the html file

original_links = links_dict .keys() 

soup = BeautifulSoup(open(html_file), "html.parser",encoding="utf8")

# This part is where I am stuck, the theory is loop through 'original_links'
 and if any of those links is found, replace it with the one I have in 'links_dict'

for link in soup.find_all('a',href=True):
    if link['href'] in links_dict:
        link['href'] = link['href'].replace(link['href'],links_dict[link['href']]

with open("new_file.html", "w",encoding="utf8") as file:
    file.write(str(soup))

Любые идеи

1 Ответ

1 голос
/ 20 мая 2019

Как только у вас получится обработать суп, вы должны найти элементы 'a', а затем проверить их атрибуты 'href' и, если они совпадают с указанными в вашем наборе, заменить при необходимости.

I 'сделайте регулярные выражения 'original_link1' и т. д., чтобы вы могли легко находить совпадения.

Как оказалось, я считаю, что на ваш вопрос уже дан ответ, см. BeautifulSoup - изменение всех ссылок в фрагменте HTML

...