gpt4 book ai didi

Python:充满 BOM 的 Youtube HTML

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:26 27 4
gpt4 key购买 nike

我正在尝试使用 Python 2.7 中的 BeautifulSoup 4 解析 youtube 评论。当我尝试播放任何 YouTube 视频时,我会收到充满 BOM 的文本,而不仅仅是在文件开头:

<p> thank you kind sir :)</p>

几乎每条评论中都会出现一个。其他网站 (guardian.co.uk) 的情况并非如此。我正在使用的代码:

# Source (should be taken from file to allow updating but not during wip):
source_url = 'https://www.youtube.com/watch?v=aiYzrCjS02k&feature=related'

# Get html from source:
response = urllib2.urlopen(source_url)
html = response.read()

# html comes with BOM everywhere, which is real ***, get rid of it!
html = html.decode("utf-8-sig")

soup = BeautifulSoup(html)

strings = soup.findAll("div", {"class" : "comment-body"})
print strings

正如你所看到的,我已经尝试过解码,但是一旦我进行了解码,它就会带回 BOM 字符。有什么想法吗?

最佳答案

这对 YouTube 来说似乎是无效的,但您不能只是告诉他们修复它,您需要一个解决方法。

所以,这是一个简单的解决方法:

# html comes with BOM everywhere, which is real ***, get rid of it!
html = html.replace(b'\xEF\xBB\xBF', b'')
html = html.decode("utf-8")

(b 前缀是不必要的,但对于 Python 2.7 来说无害,但它们会让你的代码在 Python 3 中工作……另一方面,它们会在 Python 2.5 中破坏它,所以如果这对你来说更重要,摆脱它们。)

或者,您可以先解码,然后replace(u'\uFEFF', u'')。这应该具有完全相同的效果(解码额外的 BOM 应该不会造成任何损害)。但我认为修复 UTF-8 然后解码它比尝试解码然后修复结果更有意义。

关于Python:充满 BOM 的 Youtube HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148171/

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