-4

Web の解析で文字化けが発生するのはなぜですか?

通常のキャラを手に入れたことがありますが、うまくいきencoding="big-5\\IGNORE"ません。

require(XML)
url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
options(encoding="big-5")
data=htmlParse(url,isURL=TRUE,encoding="big-5\\IGNORE")
tdata=xpathApply(data,"//table[@class='table_grey_border']")
stock <- readHTMLTable(tdata[[1]], header=TRUE, stringsAsFactors=FALSE)

ここに画像の説明を入力

文字化けを正常に戻すには、コードをどのように修正すればよいですか?

ここに画像の説明を入力

@MartinMorgan(以下)の使用を提案

htmlParse(url,isURL=TRUE,encoding="big-5")

何が起こっているかの例を次に示します。

require(XML)
url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
options(encoding="big-5")
data=htmlParse(url,isURL=TRUE,encoding="big-5")
tdata=xpathApply(data,"//table[@class='table_grey_border']")
stock <- readHTMLTable(tdata[[1]], header=TRUE, stringsAsFactors=FALSE)
stock

ここに画像の説明を入力

合計レコード数は 1335 である必要があります。上記の場合は 309 です。多くのレコードが失われたようです。

これは複雑な問題です。いくつかの問題があります。

  • 不適切な形式の html ファイル

Web は標準的な Web ではなく、整形式の html ファイルでもありません。私の主張を証明させてください。
実行してください:

url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
txt=download.file(url,destfile="stockbig-5",quiet = TRUE)

ダウンロードしたファイルstockbig-5をfirefoxで開いてみてはどうですか? ここに画像の説明を入力

  • R の Iconv 関数
    のバグ html ファイルが整形式の場合、使用できます

    data=readLines(file)
    datachange=iconv(data,from="ソース エンコード",to="ターゲット エンコード\IGNORE")

html ファイルの形式が整っていない場合は、そのようにすることができます。この例では、
実行してください。

data=readLines(stockbig-5)

エラーが発生します。

1: In readLines("stockbig-5") :  
  invalid input found on input connection 'stockbig-5'  

R で iconv 関数を使用して、不正な形式の html ファイルのエンコードを変更することはできません。

ただし、シェルでこれを行うことができます

4

1 に答える 1

2

一晩、苦労して自分で解決しました。
システム: debian6(ロケール utf-8)+R2.15(ロケール utf-8)+gnome ターミナル(ロケール utf-8)。
コードは次のとおりです。

require(XML)
url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
txt=download.file(url,destfile="stockbig-5",quiet = TRUE)
system('iconv -f big-5  -t  UTF-8//IGNORE    stockbig-5  > stockutf-8')
data=htmlParse("stockutf-8",isURL=FALSE,encoding="utf-8\\IGNORE")
tdata=xpathApply(data,"//table[@class='table_grey_border']")
stock <- readHTMLTable(tdata[[1]], header=TRUE, stringsAsFactors=FALSE)
stock

ここに画像の説明を入力

コードをもっとエレガントにしたいのですが、Rコードのシェルコマンドは醜いかもしれません。

system('iconv -f big5 -t UTF-8//IGNORE stockgb2312 > stockutf-8')

私はそれを純粋なRコードに置き換えようとしましたが失敗しました、どうすれば純粋なRコードに置き換えることができますか? コードを使用して、コンピューターで結果を複製できます。半分完了、半分成功、挑戦を続けます。

于 2012-09-09T00:52:13.080 に答える