python - 无法在 BeautifulSoup 中添加文本和链接到新标签
问题描述
我抓取了以下 HTML 以获取链接信息,创建了一个新标签,将链接添加到新标签,然后尝试将该标签附加到另一个文档,但丢失了所有 HTML 格式:
data = """
<div class="Answer">
1. BOUNDARIES - EPB & APL <i>(inferior)</i>, EPL <i>(superior). </i><div>2. FLOOR (proximal to distal) - radial styloid => scaphoid => trapezium => 1st MC base. <br /><div>3. CONTENTS - cutaneous branches of radial nerve <i>(on the roof),</i> cephalic vein <i>(begins here),</i> radial artery <i>(on the floor).</i></div></div><div><br /></div><div><img src="paste-27a44c801f0776d91f5f6a16a963bff67f0e8ef3.jpg" /><br /></div><div><b>Image: </b>Case courtesy of Dr Sachintha Hapugoda, <a href="https://radiopaedia.org/">Radiopaedia.org</a>. From the case <a href="https://radiopaedia.org/cases/52525">rID: 52525</a> [Accessed 15 Nov. 2018].</div>
</div>
"""
soup = BeautifulSoup(data, "html.parser")
image_link = soup.find('div').find('b').next.next
print(image_link)
我抓取了上面的数据得到以下参考链接(这是我需要的格式):
Case courtesy of Dr Sachintha Hapugoda, <a href="https://radiopaedia.org/">Radiopaedia.org</a>. From the case <a href="https://radiopaedia.org/cases/52525">rID: 52525</a> [Accessed 15 Nov. 2018].
但是将上述参考链接添加到新标签会丢失所有 HTML 格式:
p_tag = soup.new_tag('p')
p_tag.append(soup.new_tag('br'))
p_tag.append(soup.new_tag('b'))
p_tag.b.append("Image: ")
p_tag.append(NavigableString(image_link))
print(p_tag)
回报:
<p><br/><b>Image: </b>Case courtesy of Dr Sachintha Hapugoda, <a href="https://radiopaedia.org/">Radiopaedia.org</a>. From the case <a href="https://radiopaedia.org/cases/52525">rID: 52525</a> [Accessed 15 Nov. 2018].</p>
所有 HTML 格式都会丢失。我该怎么办?
解决方案
因为image_link
isNavigableString
或 string 的类型它会将字符转换<
为<
您需要Tag
通过创建新的来将其转换为soup
....
p_tag.b.append("Image: ")
image_tag = BeautifulSoup(image_link, 'html.parser')
p_tag.append(image_tag)
或取消结果
from html import unescape
....
p_tag.append(NavigableString(image_link))
unescaped_p = unescape(str(p_tag))
print(unescaped_p)
推荐阅读
- javascript - 即使有元素也无法访问 HTMLCollection
- windows - Windows:获取所有*当前*环境变量
- amazon-cloudformation - 将 CloudFormation 模板 (yaml) 转换为 cdk python 代码
- javascript - 有没有更简洁的方法在顶层定义 React Hooks useState?
- python-3.x - python3中VSCODE中没有终端输出
- java - 如何在使用 IntelliJ 的 Spring-framework 项目中找到 404 错误的原因?
- python-3.x - 如何设置客户端长时间不使用自动关机
- twilio - 在中国通过语音通话提供一次性密码 (OTP)
- javascript - 根据选择填充下拉列表
- flutter - 如何获取包含其文件的目录的大小