#python #python-3.x #beautifulsoup
#python #python-3.x #beautifulsoup
Вопрос:
Я пытаюсь добавить атрибут к HTML-тегу без кавычек, чтобы я мог добавить косую черту перед кавычками и добавить кавычки вручную.
Атрибут src должен оставаться пустым, я не могу его переименовать.
Мой текущий код выглядит следующим образом.
data = open('data.sql')
soup = BeautifulSoup(data, 'html.parser')
for img in soup.find_all(name="img"):
#get src
src = img['src']
# clear src
img['src'] = ""
# add new attribute
img.attrs["data-src"] = src
print(img.attrs["data-src"])
#save soup
with open('db.sql', "w") as file:
file.write(str(soup))
Мой результат (после сохранения его в db.sql):
<img src="" data-src='"/folder/img/image.jpg"'>
Что я ищу (без одинарных кавычек):
<img src="/folder/img/image.jpg">
То, что я пытаюсь, это:
Загрузить в db.sql с помощью Bs4
Установить для атрибута src-data значение src
Очистить значение атрибута src
Сохранить файл в db2.sql
Ответ №1:
Используйте del
для удаления атрибутов:
for img in soup.find_all(name="img"):
src = img['src']
del img['src']
img.attrs['data-src'] = src
Комментарии:
1. Я не собираюсь удалять атрибут src. Проблема в одинарных кавычках вокруг нового значения, они мне не нужны.
2. @JeroenR Ах, я неправильно истолковал ваш желаемый результат. Однако вокруг результирующего тега нет одинарных кавычек. Они отображаются только в вашей консоли Python, потому что именно так отображаются строки; сравните
"hello"
сprint("hello")
.3. Я загружаюсь в файл .sql, читаю / изменяю html с помощью bs4 и переписываю его в новый файл .sql. Когда это происходит, я получаю одинарные кавычки вокруг своих значений (внутри файла sql)
4. @JeroenR Если это так, то это связано с тем, как вы пишете SQL-код, а не с вашими манипуляциями с HTML-документом. Другими словами, это не связано, и у вас будет та же проблема с исходным, неизмененным документом.
5. @JeroenR Если это действительно ваш фактический код и выходные данные, то это означает, что вложенные кавычки уже были частью исходного HTML-кода. … Я также немного озадачен, почему вы являетесь
.sql
расширением файла для HTML-файлов.
Ответ №2:
Решение проблемы состояло в том, чтобы перебрать строки базы данных, получить столбец с HTML внутри и создать из него soup (Bs4).