python - 如何阻止 BeautifulSoup 将 HTML 实体解码为符号
问题描述
我正在尝试获取给定网站上的所有链接,但遇到了一些关于 HTML 实体的问题。这是我使用 BeautifulSoup 抓取网站的代码:
from bs4 import BeautifulSoup
import requests
.
.
baseRequest = requests.get("https://www.example.com", SOME_HEADER_SETTINGS)
soup = BeautifulSoup(baseRequest.content, "html.parser")
pageLinks = []
for anchor in soup.findAll("a"):
pageLinks.append(anchor["href"])
.
.
print(pageLinks)
当看到这种元素时,代码会出现问题:
<a href="./page?id=123§=2">Link</a>
它不是打印["./page?id=123§=2"]
,而是将§
部件视为 HTML 实体并在控制台中显示:
["./page?id=123§=2"]
有没有办法防止这种情况发生?
解决方案
这是一个
from bs4 import BeautifulSoup
soup = BeautifulSoup('<a href="./page?id=123§=2">Link</a>', "html.parser")
pageLinks = []
for anchor in soup.findAll("a"):
pageLinks.append(anchor["href"])
uncoded = ''.join(i for i in pageLinks).encode('utf-8')
decoded = ''.join(map(lambda x: chr(ord(x)),''.join(i for i in pageLinks)))
print('uncoded =',uncoded)
print('decoded =',decoded)
输出
uncoded = b'./page?id=123\xc2\xa7=2'
decoded = ./page?id=123§=2
推荐阅读
- docker - How to use service connection string in docker compose inside container within gitlab ci?
- python-3.x - Quartiles calculations and classifications filtering by product
- python - Python列表理解:将列表中的值添加到多个单独的列表中
- c - 如何将大于 255 的值添加到宽整数(编码为 uint_8t 数组)?
- ios - 正确设置按钮约束以在目标 C 中以编程方式显示在屏幕底部
- python - 如何在 discord.py 中获取当前类别的名称
- git - git 仅使用特定范围的提交
- matlab - 在 MATLAB heatmap() 中自定义标签颜色
- react-native - 如何将图像从 React Native + Expo 应用程序上传到 Azure Blob 存储?
- react-native - 我试图在 react native 上做 bottomSheet,但我得到了一个错误。错误是:类型“字符串”不可分配给类型“参考”
| 不明确的'