我正在使用 BeautifulSoup4 进行一些网络抓取,并且在解码响应方面遇到问题。网站返回我的标题,标题中说:
内容类型:文本/html;字符集=ISO-8859-1
所以通常我用 latin1 字符集对其进行解码。但是解码后,html中有一行,上面写着:
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
现在从这行开始,字符串没有正确解码。
那么处理这个问题的正常方法是什么?我想在传出的 http 标头中设置接受编码行,但找不到方法。其他选项是逐行解码以搜索新字符集,但更愿意仅通过接受 utf-8 来完成
我使用 Python3,libray http.client
EDIT1:代码:
import http.client as cl
from bs4 import BeautifulSoup
conn = cl.HTTPConnection('www.amazon.com')
conn.request("GET", '/A-Man-For-All-Seasons/dp/B003TQ1IW6/ref=sr_1_109?s=instant-video&ie=UTF8&qid=1348337540&sr=1-109')
response = conn.getresponse()
content = response.read()
soup = BeautifulSoup(content)
f = open('am.html', 'w')
f.write(soup.prettify())
#i am actually doing this with httplib2 but result is the same
EDIT2:看起来 Linux 中 Beautiful Soup 4 的配置确实有问题,或者它是一个错误。这是有效的,但我无法用 BS4 解析响应:
import httplib2
h = httplib2.Http('.cache')
response, content = h.request(movieLink , headers={'accept-charset': 'latin1'})
content = content.decode('latin-1')
谢谢你,Blckknght。