gpt4 book ai didi

python - 如何用python解码和编码网页?

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:06 24 4
gpt4 key购买 nike

我使用Beautifulsoup和urllib2下载网页,但是不同的网页有不同的编码方式,比如utf-8,gb2312,gbk。我使用urllib2获取sohu的主页,它是用gbk编码的,但是在我的代码中,我也使用这种方式来解码它的网页:

self.html_doc = self.html_doc.decode('gb2312','ignore')

但是在使用 BeautifulSoup 将它们解码为 un​​icode 之前,我如何知道页面使用的编码方法?在大多数中文网站中,http Header 字段中没有content-type。

最佳答案

使用 BeautifulSoup,您可以解析 HTML 并访问 original_encoding 属性:

import urllib2
from bs4 import BeautifulSoup

html = urllib2.urlopen('http://www.sohu.com').read()
soup = BeautifulSoup(html)

>>> soup.original_encoding
u'gbk'

这与 <meta> 中声明的编码一致HTML 中的标记 <head> :

<meta http-equiv="content-type" content="text/html; charset=GBK" />

>>> soup.meta['content']
u'text/html; charset=GBK'

现在你可以解码 HTML 了:

decoded_html = html.decode(soup.original_encoding)

但没有太多意义,因为 HTML 已经作为 unicode 可用:

>>> soup.a['title']
u'\u641c\u72d0-\u4e2d\u56fd\u6700\u5927\u7684\u95e8\u6237\u7f51\u7ad9'
>>> print soup.a['title']
搜狐-中国最大的门户网站
>>> soup.a.text
u'\u641c\u72d0'
>>> print soup.a.text
搜狐

也可以尝试使用 chardet 来检测它模块(虽然有点慢):

>>> import chardet
>>> chardet.detect(html)
{'confidence': 0.99, 'encoding': 'GB2312'}

关于python - 如何用python解码和编码网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184863/

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