解析日本网站

时间:2017-08-27 02:53:14

标签: r parsing encoding web-scraping html-parsing

我希望从日本网站上解析东京房屋销售的一些数据。 代码如下:

library(XML)
library(bitops)
library(RCurl)
library(httr)

orgURL1 = 'http://www.stepon.co.jp/search/list/?pageNo=2&limit=100&prefCityCd=13_101&prefCityCd=13_103&prefCityCd=13_102&prefCityCd=13_104&prefCityCd=13_113&prefCityCd=13_105&prefCityCd=13_116&prefCityCd=13_117&prefCityCd=13_119&prefCityCd=13_108&prefCityCd=13_107&prefCityCd=13_106&prefCityCd=13_118&prefCityCd=13_123&prefCityCd=13_121&prefCityCd=13_122&prefCityCd=13_109&prefCityCd=13_110&prefCityCd=13_111&prefCityCd=13_112&prefCityCd=13_114&prefCityCd=13_115&prefCityCd=13_120&hanbaiKakakuMin=&hanbaiKakakuMax=&senyuMensekiMin=&senyuMensekiMax=&tohoTime=&chikunensu=&chijoKaiso=&souKosu=&floor=&mansionNm=&searchType=area&prefCd=13&type=mansion'

pttURL <- paste(orgURL1)
urlExists <- url.exists(pttURL)

alldata = data.frame()

html <- getURL(pttURL)
xml <- htmlParse(html, encoding = 'jis')

allinfo = xpathApply(xml,"//*/div/div/dl[@class='clearfix']",xmlValue)

tempdata = cbind(allinfo)
alldata = rbind(tempdata)

但解析的数据显示在一些不可读的字符中,如下所示:

> head(allinfo)
[[1]]
[1] "i\n    \t\t\t\t\t\t\t\t\t1,500~\n    \t\t\t\t\t\t\t\t"

[[2]]
[1] "Yn\n    \t\t\t\t\t\t\t\t\ts`aOaXU\n    \t\t\t\t\t\t\t\t"

[[3]]
[1] "eE\n    \t\t\t\t\t\t\t\t\tgcacuuTOavwaeka3agcacuuOavwaeka9aguaJuuZ{Ovwaeka9a\n    \t\t\t\t\t\t\t\t"

[[4]]
[1] "Oae/eLEI\n    \t\t\t\t\t\t\t\t\t[\xc2\u0080 / 20.46m簡\n    \t\t\t\t\t\t\t\t"

[[5]]
[1] "YKiuj\n    \t\t\t\t\t\t\t\t\t1Kaij/na6KA\n    \t\t\t\t\t\t\t\t"

[[6]]
[1] "zN\n    \t\t\t\t\t\t\t\t\t1977N05z\n    \t\t\t\t\t\t\t\t"

我想它应该与编码有关,但我已经尝试过&#39; shift-jis&#39;它没有用。

我是解析的新手...... 任何帮助都将深表感谢。

2 个答案:

答案 0 :(得分:0)

您应该在rcurl参数中传递指定编码。

html <- getURL(pttURL,.encoding='shift_jis')
xml <- htmlParse(html)

否则html输入错误的字符串就像 <meta content=\"\u0090ç\u0091ã\u0093c\u008bæ,\u0092\u0086\u0089\u009b\u008bæ,\u0093\u008c\u008b\u009e\u0093s,\u0092\u0086\u008cÃ\u0083}\u0083\u0093\u0083V (注意它不是原始二进制数据)。

当然,你无法得到正确的结果。

答案 1 :(得分:0)

即使你已经得到它,我也无法让你的原版工作,但这里有一个移植到rvest的版本:

library(rvest)

orgURL1 = 'http://www.stepon.co.jp/search/list/?pageNo=2&limit=100&prefCityCd=13_101&prefCityCd=13_103&prefCityCd=13_102&prefCityCd=13_104&prefCityCd=13_113&prefCityCd=13_105&prefCityCd=13_116&prefCityCd=13_117&prefCityCd=13_119&prefCityCd=13_108&prefCityCd=13_107&prefCityCd=13_106&prefCityCd=13_118&prefCityCd=13_123&prefCityCd=13_121&prefCityCd=13_122&prefCityCd=13_109&prefCityCd=13_110&prefCityCd=13_111&prefCityCd=13_112&prefCityCd=13_114&prefCityCd=13_115&prefCityCd=13_120&hanbaiKakakuMin=&hanbaiKakakuMax=&senyuMensekiMin=&senyuMensekiMax=&tohoTime=&chikunensu=&chijoKaiso=&souKosu=&floor=&mansionNm=&searchType=area&prefCd=13&type=mansion'

html <- read_html(orgURL1)

text <- html %>% 
    html_nodes(xpath = "//*/div/div/dl[@class='clearfix']") %>%
    html_text(trim = TRUE)

head(text)
#> [1] "価格\n    \t\t\t\t\t\t\t\t\t4,200万円"                                
#> [2] "所在地\n    \t\t\t\t\t\t\t\t\t東京都足立区島根4丁目"                 
#> [3] "交通\n    \t\t\t\t\t\t\t\t\t東武伊勢崎・大師線「西新井」駅より徒歩8分"
#> [4] "間取り/専有面積\n    \t\t\t\t\t\t\t\t\t2LDK / 73.51m²"                
#> [5] "所在階(向き)\n    \t\t\t\t\t\t\t\t\t1階部分(南)/地上10階建て"     
#> [6] "築年月\n    \t\t\t\t\t\t\t\t\t2011年02月築"

您看到的内容可能与语言环境有关,如果您没有可用的CJK字体,显然无法正常显示。