Как установить атрибут BeautifulSoup при сохранении HTML объектов? - PullRequest
0 голосов
/ 25 января 2020

Настройка:

from bs4 import BeautifulSoup

soup = BeautifulSoup('<img/>', 'html.parser')

Мне нужно сделать следующее:

soup.img['src'] = 'url?x=1&y=2'

Желаемое поведение:

print(soup)
<img src="url?x=1&y=2"/>

Фактическое поведение:

print(soup)
<img src="url?x=1&amp;y=2"/>

В общем, как мне установить атрибут Tag для передаваемой литеральной строки?

Ответы [ 2 ]

1 голос
/ 25 января 2020

Ваш атрибут src действительно сохраняется как 'url?x=1&y=2', однако, когда вы делаете print(soup) BeautifulSoup применяет форматирование / экранирование, чтобы избежать создания возможно неправильного HTML. Если вы хотите, чтобы он этого не делал, вы можете явно объявить это, например:

print(soup.decode(formatter=None))

Ссылка: Формат форматирования вывода

0 голосов
/ 25 января 2020

&amp; - это просто &; попробуйте сделать что-то вроде этого:

soup.img['src'].replace('&amp;','&')

Вывод:

'url? x = 1 & y = 2'

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