gpt4 book ai didi

python - 用 BeautifulSoup 编码表情符号

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:54 25 4
gpt4 key购买 nike

寻求帮助。我正在开发一个项目,使用 Python 中的 Beautiful Soup 抓取特定的 Craigslist 帖子。我可以成功显示帖子标题中找到的表情符号,但在帖子正文中显示不成功。我尝试过不同的变体,但到目前为止没有任何效果。任何帮助将不胜感激。

代码:

f = open("clcondensed.txt", "w")
html2 = requests.get("https://raleigh.craigslist.org/wan/6078682335.html")
soup = BeautifulSoup(html2.content,"html.parser")
#Post Title
title = soup.find(id="titletextonly")
title1 = soup.title.string.encode("ascii","xmlcharrefreplace")
f.write(title1)
#Post Body
body = soup.find(id="postingbody")
body = str(body)
body = body.encode("ascii","xmlcharrefreplace")
f.write(body)

从正文收到错误:

'ascii' codec can't decode byte 0xef in position 273: ordinal not in range(128)

最佳答案

您应该使用unicode

body = unicode(body)

请引用Beautiful Soup文档NavigableString

<小时/>

更新:

抱歉这么快就回答了。事情不太对。

这里你应该使用lxml解析器而不是html解析器,因为html解析器不能很好地支持NCR (Numeric Character Reference)表情符号。

在我的测试中,当NCR emoji十进制值大于65535时,例如您的html演示emoji 🚢HTML解析器只需使用错误的 unicode \ufffd 而非 u"\U0001F6A2" 对其进行解码即可。我找不到准确的 Beautiful Soup 引用,但 lxml 解析器就可以了。

下面是经过测试的代码:

import requests
from bs4 import BeautifulSoup
f = open("clcondensed.txt", "w")
html = requests.get("https://raleigh.craigslist.org/wan/6078682335.html")
soup = BeautifulSoup(html.content, "lxml")
#Post Title
title = soup.find(id="titletextonly")
title = unicode(title)
f.write(title.encode('utf-8'))
#Post Body
body = soup.find(id="postingbody")
body = unicode(body)
f.write(body.encode('utf-8'))
f.close()

您可以引用lxml entity handling做更多的事情。

如果你没有安装lxml,只需引用 lxml installing .

希望这有帮助。

关于python - 用 BeautifulSoup 编码表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com