2012-04-25 1 views
1

私の仕事はできるだけ多くのフラットな売り買いをダウンロードすることです。私はリンクや他のものをダウンロードするためのスクリプトを持っていますが、私はフラットの座標を取得することはできません(私にとって重要な、私の分析の要点)。不動産のコードを取得

座標はウェブサイト上に表示されます(googleマップ要素を調べることによって)が、ウェブサイトのソースには表示されません。

以下の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') 

答えて

2

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

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 
+0

ありがとう、これは私が必要なものです! – Maciej

+0

嬉しいですが、@Maciejは役に立ちます。 :)もちろん、サイトを掻き集めて目的のためにデータを使用することは合理的であることを確認するだけでなく、良い市民であり、サイトを洪水させないようにクエリをペースすることはあなた次第です。 .. – gauden

関連する問題