2

我正在尝试阅读以下包含 R 中日文和英文文本的 CSV 文件,构建一个 URL 并检索结果。

数据看起来像这样;

ID,AutoG1,AutoG2
8756,Pocket Card,ポケットカード
4574,Takara Standard,タカラスタンダード

我试图运行的代码如下;

>library(XML)
>library(RCurl)
>
>data<-read.csv("test.csv")
>url <- paste("suggestqueries.google.com/complete/search?output=toolbar&hl=jp&qu=",data[1,"AutoG2"],sep="")
>url
"suggestqueries.google.com/complete/search?output=toolbar&hl=jp&qu=ポケットカード"
>result <-getURL(URLencode(url),.opts=opts)
>doc <- xmlRoot(xmlTreeParse(result))
>length(zzdoc)
0

结果应该是这样的,这表明实际上有 10 个结果。

我认为解决这个问题的一个线索是了解 url 变量是如何在内部表示的。如果我直接使用 URL 字符串;

>url2 <- "suggestqueries.google.com/complete/search?output=toolbar&hl=jp&qu=ポケットカード"
>zz <-getURL(URLencode(url2),.opts=opts)
>zzdoc <- xmlRoot(xmlTreeParse(zz))
>length(zzdoc)
10

我得到了想要的结果,但我需要使用类似第一个代码片段的方式以编程方式获得这些结果。url 和 url2 看起来相似,但在内部它们是不同的,我认为这是由于编码。

>url==url2
FALSE
>Encoding(url)
"unknown"
>Encoding(url2)
"UTF-8"

我试图强制编码;

> Encoding(url)<-"UTF-8"
> url
"suggestqueries.google.com/complete/search?output=toolbar&hl=jp&qu=\u0083|\u0083P\u0083b\u0083g\u0083J\u0081[\u0083h"
> zz <-getURL(URLencode(url),.opts=opts)
Warning message:
In strsplit(URL, "") : input string 1 is invalid UTF-8

这似乎也不起作用。任何人都可以提供任何建议吗?

4

1 回答 1

0

我认为您需要包含您的代码使用的“http://”

url <- paste("http://suggestqueries.google.com/complete/search?output=toolbar&hl=jp&qu=",data[1,"AutoG2"],sep="")

作为参考,Nippon 包非常适合切换编码

于 2017-05-12T21:34:48.800 回答