0

Web サイトのエンコーディングに問題があります。Web サイトをスクレイピングするプログラムを作成しましたが、読み取ったコンテンツのエンコーディングを変更することに成功しませんでした。私のコードは次のとおりです。

import sys,os,glob,re,datetime,optparse
import urllib2

from BSXPath import BSXPathEvaluator,XPathResult
#import BeautifulSoup

#from utility import *

sTargetEncoding = "utf-8"

page_to_process = "http://www.xxxx.com" 
req = urllib2.urlopen(page_to_process)
content = req.read()
encoding=req.headers['content-type'].split('charset=')[-1]
print encoding

ucontent = unicode(content, encoding).encode(sTargetEncoding)
#ucontent = content.decode(encoding).encode(sTargetEncoding)
#ucontent = content

document = BSXPathEvaluator(ucontent)

print "ORIGINAL ENCODING: " + document.originalEncoding

私は外部ライブラリ(BSXPath BeautifulSoapの拡張)を使用し、document.originalEncodingは、変更しようとしたutf-8エンコーディングではなく、Webサイトのエンコーディングを出力します。誰か提案がありますか?

ありがとう

4

1 に答える 1

0

HTTP ヘッダーによって提示されるエンコーディングが、HTML 自体の内部で指定されたエンコーディングと同じであるという保証はありません。これは、サーバー側の設定ミスか、HTML 内の文字セット定義が間違っているために発生する可能性があります。エンコーディングを自動的に検出したり、正しいエンコーディングを検出したりする方法は実際にはありません。HTML で適切なエンコーディングを手動で確認し (たとえば、iso-8859-1 と utf-8 は簡単に検出できます)、アプリ内で手動でエンコーディングをハードコーディングすることをお勧めします。

于 2011-03-31T09:00:22.060 に答える