2016-04-15 16 views
5

私は、侵入した植物種の場所のデータを、rvestパッケージを使用してCABI invasive species compendiumから抽出しようとしています。htmlテーブルからのデータの掻き取り

いくつかのチュートリアルを見てきましたが、私はテーブルからデータを簡単に取り出すことができるはずだと考えました。しかし、私は苦労し続けています。

私が種の位置データを求めたいとしましょうBrassica tournefortii。種を記録した場所の詳細を入手するには、技術outlined hereを使用するこのコードを使用できるはずです。

library(rvest) 
isc<-read_html("http://www.cabi.org/isc/datasheet/50069") 
isc %>% 
html_node("#toDistributionTable td:nth-child(1)") %>% 
html_text() 

しかし、私はウェブスクレイピングに完全に新しいですエラー

Error: No matches 

を取得し、このコードを実行しています。恐ろしいことをしていますか?

答えて

8

まず、私はあなたにもっとアップアップしてもらいたいと思います。最後に、$ SPORTSBALLや$ MONEYとは関係のない擦り傷の質問があります。 :-)

そのサイトは悪です。埋め込み名前空間を使用します。これはまた、xml2パッケージを使用することを意味します。

library(rvest) 
library(xml2) 

isc <- read_html("http://www.cabi.org/isc/datasheet/50069") 

ns <- xml_ns(isc) 

xml_text(xml_find_all(isc, xpath="//div[@id='toDistributionTable']/table/tbody/tr/td[1]", ns)) 

## [1] "ASIA"       "Azerbaijan"      
## [3] "Bhutan"       "China"       
## [5] "-Tibet"       "India"       
## [7] "-Delhi"       "-Indian Punjab"     
## [9] "-Rajasthan"      "-Uttar Pradesh"     
## [11] "Iran"       "Iraq"       
## [13] "Israel"       "Jordan"       
## [15] "Kuwait"       "Lebanon"      
## [17] "Oman"       "Pakistan"      
## [19] "Qatar"       "Saudi Arabia"     
## [21] "Syria"       "Turkey"       
## [23] "Turkmenistan"     "United Arab Emirates"   
## [25] "Uzbekistan"      "Yemen"       
## [27] "AFRICA"       "Algeria"      
## [29] "Egypt"       "Libya"       
## [31] "Morocco"      "South Africa"     
## [33] "Tunisia"      "NORTH AMERICA"     
## [35] "Mexico"       "USA"       
## [37] "-Arizona"      "-California"     
## [39] "-Nevada"      "-New Mexico"     
## [41] "-Texas"       "-Utah"       
## [43] "SOUTH AMERICA"     "Chile"       
## [45] "EUROPE"       "Belgium"      
## [47] "Cyprus"       "Denmark"      
## [49] "France"       "Greece"       
## [51] "Ireland"      "Italy"       
## [53] "Spain"       "Sweden"       
## [55] "UK"        "-England and Wales"    
## [57] "-Scotland"      "OCEANIA"      
## [59] "Australia"      "-Australian Northern Territory" 
## [61] "-New South Wales"    "-Queensland"     
## [63] "-South Australia"    "-Tasmania"      
## [65] "-Victoria"      "-Western Australia"    
## [67] "New Zealand" 
+0

素晴らしいです、ありがとう!それは私がそのサイトからデータを取得するのに良いスタートをするのを助けるはずです。どのように情報をxml_find_all関数のxpath部分に入れるのですか? –

+1

右クリックし、そのテーブルの要素の検査を選択した後、開発者ツールに表示されたパスからマップしました。私はCSSでそれをやり直すことができるかもしれませんが、少しのXPathがいくつかの状況で役立つことがわかっています。 – hrbrmstr

関連する問題