python - URL open , decode 编码错误 TypeError: a bytes-like object is required, not 'str'
问题描述
我正在关注一个教程和下一段代码:
import urllib.request as url
def getTextWaPo(URL):
page = url.urlopen(URL).read().decode('utf8')
soup = BeautifulSoup(page, 'lxml')
mytext = ' '.join(map(lambda p: p.text, soup.find_all('article')))
return mytext.encode('ascii', errors='replace').replace("?", " ")
返回:
TypeError: a bytes-like object is required, not 'str'
然而在文档中,我看到 encode 是一个字符串方法。那么为什么我需要类似字节的对象呢?如果这不是这样做的方法,我该如何删除文本中的特殊字符?
我环顾四周,但我遇到的答案对我没有帮助,或者我至少不明白。
解决方案
您的问题在于替换而不是编码。您正在使用编码将字符串转换为字节格式,然后使用字符串而不是字节替换。
如果没有示例 URL 来测试它,我不确定您会期望什么输出,但请尝试将 return 语句替换为;
return mytext.encode('ascii', errors='replace').replace(b"?", b" ")
推荐阅读
- three.js - 如何相对于向量旋转笛卡尔坐标?
- android - 谷歌地图填充底部不适用于颤振Android
- regex - GSheets - 删除*后*一个单词的所有内容(但保留单词)
- javascript - 预期声明或声明 (Javascript)
- php - 在 WooCommerce 管理员订单中的“退款”按钮旁边添加另一个按钮
- laravel - 按重复项对 algolia 结果进行分组
- flutter - 在 Flutter 中切换容器
- windows - “超时 - t”与“超时”。有什么实际区别吗?
- javascript - 在滚动时隐藏顶部标题并向上移动主标题
- azure - 如果 Azure COSMOS 容器用完 RU,会发生什么情况?