Как добавить JavaScript в HTML, используя красивый суп? - PullRequest
0 голосов
/ 29 августа 2018

Я использую красивый суп для редактирования HTML-файла. Я смог добавить тег, но у меня возникли проблемы с добавлением кода JavaScript внутри элемента script.

У меня есть следующий код:

soup = BeautifulSoup(differencehtml, 'html.parser')

# create a new tag
tag = soup.new_tag("script")
tag.append = jscodestring  # this is not adding the javascript to the html file
# tag.string = jscodestring # also tried this unsuccesfully

head = soup.find('head')

#insert new tag after head tag
head.insert_after(tag)

Когда я проверяю полученный HTML, он выглядит так:

...
</head>
<script>
   </script>
...

Почему приложение не работает? Как получить код внутри тега script?

1 Ответ

0 голосов
/ 29 августа 2018

Append () используется для изменения содержимого тегов. Посмотрите документацию здесь, https://www.crummy.com/software/BeautifulSoup/bs4/doc/#navigablestring-and-new-tag.

Эта строка вашего кода:

tag.append = jscodestring  # this is not adding the javascript to the html file

должно выглядеть так

tag.append(jscodestring)  # this is not adding the javascript to the html file

Несмотря на это, выполнение этого просто поместит строковое значение, равное jscodestring, равное внутри содержимого вашего тега.

Что вы хотите сделать, так это добавить новый атрибут в тег скрипта.

Это можно сделать примерно так. Я не вижу содержимого diffhtml, поэтому не могу быть уверен.

soup.find('script')['selected'] = '<path to your javascript file>'

Проверьте это сообщение для другого примера, BeautifulSoup - добавление атрибута к тегу .

(РЕДАКТИРОВАТЬ) Чтобы код выглядел следующим образом

<script> Hello World!</script>

вам просто нужно сделать tag.append("Hello World!") или поместить переменную, которая является строкой, внутри append ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...