1

私の仕事は、できるだけ多くのフラットセルオファーをダウンロードすることです。リンクなどをダウンロードするためのスクリプトがありますが、フラットの座標を取得できません(これは私にとって非常に重要であり、分析の要点です)。

座標はウェブサイトに表示されますが(グーグルマップ要素をチェックすることにより)、ウェブサイトのソースには表示されません。

以下のRコードを使用すると、空のリストが表示されます。XMLまたはRCurlパッケージを使用しても違いはありません。

Rを使用してこれを達成することは可能だと思いますか、それとも他のプログラミング言語(Pythonなど)について考えるべきですか?)

library(XML)
library(RCurl)
url<-'http://en.otodom.pl/flat-poznan-jezyce-2720m2-2-rooms-125000-pln-id13250586.html'
doc<-htmlParse(url,encoding='utf-8')
xpathApply(doc,'//div[@id="googleMap"]',xmlGetAttr,'data-map')

#the same result
doc<-getURL(url, httpheader = c('User-Agent' = "Informative string with your contact info"),.encoding='utf-8')
doc<-htmlParse(doc,encoding='utf-8')
xpathApply(doc,'//div[@id="googleMap"]',xmlGetAttr,'data-map')

# the same here
doc<-getURL(url, followlocation=T)
doc<-htmlParse(doc,encoding='utf-8')
xpathApply(doc,'//div[@id="googleMap"]',xmlGetAttr,'data-map')
4

1 に答える 1

2

コードは基本的に正しいですが、座標が含まれていないページをダウンロードします。[マップ]リンクをクリックすると、AjaxリクエストがアクティブになりGoogleマップを取得します。座標を見つけるには、2番目のミニページを解析する必要があります。それを関数にパッケージ化しました。そのサイトのページのURLを渡します。そのページをプルダウンし、データIDを取得し、Googleマップを呼び出して、そこから座標を取得します。

library(XML)
library(RCurl)

get.coords <- function(url) {
    doc<-htmlParse(url,encoding='utf-8')
    data.ins.id <- getNodeSet(doc,'//@data-ins-id')
    data.ins.id <- as.character(data.ins.id[[1]]["data-ins-id"])

    mapurl <- paste('http://en.otodom.pl/?mod=show&act=showMap&insId=', 
                    data.ins.id, 
                    sep='')
    doc <- htmlParse(mapurl,encoding='utf-8')
    result <- getNodeSet(doc,'//@data-map')
    result <- as.character(result[[1]]["data-map"])
    return(strsplit(result, "|", fixed=TRUE)[[1]][c(1,2)])
}

url <- 'http://en.otodom.pl/flat-poznan-jezyce-2720m2-2-rooms-125000-pln-id13250586.html'
coords <- get.coords(url)
coords
于 2012-04-25T23:43:55.747 に答える