2017-11-03 3 views
0

私は比較的新しくR(そしてRで掻き集めることに新しいブランドのスパンキング)です。次のターミナル内(ドッカ実行-d -p 4445:4444セレン/スタンドアロン-のfirefox)を実行した後https://rawgit.com/petrkeil/Blog/master/2017_08_15_Web_scraping/web_scraping.html#advanced-scraping-with-rseleniumRSeleniumエラーの取得:「マリネットからの応答の解読に失敗しました」

が、私はこのチュートリアルに従うことによってRSeleniumでこすりする方法を学ぶためにしようとしてきた、I上記のハイパーリンクチュートリアルからのわずかな変更で引っ張る、以下のRコードを実行しようとした:

get.tree <- function(genus, species) 
{ 
    # navigate to the page 
    browser <- remoteDriver(port=4445L) 
    browser$open(silent = T) 

    browser$navigate("http://www.bgci.org/global_tree_search.php?sec=globaltreesearch") 
    browser$refresh() 

    # create r objects from the web search input and button elements 

    genusElem <- browser$findElement(using = 'id', value = "genus-field") 
    specElem <- browser$findElement(using = 'id', value = "species-field") 
    buttonElem <- browser$fiendElement(using = 'class', value = "btn_ohoDO") 

    # tell R to fill in the fields 

    genusElem$sendKeysToElement(list(genus)) 
    specElem$sendKeysToElement(list(species)) 

    # tell R to click the search button 

    buttonElem$clickElement() 

    # get output 

    out <- browser$findElement(using = "css", value = "td.cell_1O3UaG:nth-child(4)") # the country origin 
    out <- out$getElementText()[[1]] # extract actual text string 
    out <- strsplit(out, split = "; ")[[1]] # turns into character vector 

    # close browser 

    browser$close() 

    return(out) 
} 

# Now let's try it: 

get.tree("Abies", "alba") 

しかし、すべてのことをやった後、私は次のエラーを取得する:

Selenium message:Failed to decode response from marionette Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T16:15:40.131Z' System info: host: 'd260fa60d69b', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.49-moby', java.version: '1.8.0_131' Driver info: driver.version: unknown

Error: Summary: UnknownError Detail: An unknown server-side error occurred while processing the command. class: org.openqa.selenium.WebDriverException Further Details: run errorDetails method

誰もがこれが何を意味し、どこが間違っていたのか考えていますか?

ありがとうございました!

+0

チュートリアル( 'sudo docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.0')のようにgoogle chromeや古いバージョンのfirefoxを使用してください。新しいバージョンのFirefoxの問題は、徐々にw3cプロトコルに切り替わりつつあることです。 – jdharrison

答えて

0

ちょうどそれは、インライン型の結果を取得し、RSeleniumをトスすることができXHRリクエストを活用する:

library(httr) 
library(tidyverse) 

get_tree <- function(genus, species) { 

    GET(
    url = sprintf("https://data.bgci.org/treesearch/genus/%s/species/%s", genus, species), 
    add_headers(
     Origin = "http://www.bgci.org", 
     Referer = "http://www.bgci.org/global_tree_search.php?sec=globaltreesearch" 
    ) 
) -> res 

    stop_for_status(res) 

    matches <- content(res, flatten=TRUE)$results[[1]] 

    flatten_df(matches[c("id", "taxon", "family", "author", "source", "problems", "distributionDone", "note", "wcsp")]) %>% 
    mutate(geo = list(map_chr(matches$TSGeolinks, "country"))) %>% 
    mutate(taxas = list(map_chr(matches$TSTaxas, "checkTaxon"))) 

} 

xdf <- get_tree("Abies", "alba") 

xdf 
## # A tibble: 1 x 8 
##  id  taxon family author  source distributionDone  geo  taxas 
## <int>  <chr> <chr> <chr>  <chr>   <chr>  <list>  <list> 
## 1 58373 Abies alba Pinaceae Mill. WCSP Phans    yes <chr [21]> <chr [45]> 

glimpse(xdf) 
## Observations: 1 
## Variables: 8 
## $ id    <int> 58373 
## $ taxon   <chr> "Abies alba" 
## $ family   <chr> "Pinaceae" 
## $ author   <chr> "Mill." 
## $ source   <chr> "WCSP Phans" 
## $ distributionDone <chr> "yes" 
## $ geo    <list> [<"Albania", "Andorra", "Austria", "Bulgaria", "Croatia", "Czech Republic", "Fr... 
## $ taxas   <list> [<"Abies abies", "Abies alba f. columnaris", "Abies alba f. compacta", "Abies a... 

それはあなたがいくつかの点でget_tree()を変更する必要があります可能性が高いのですが、それはセレンを持つよりはましですまたはSplashまたはphantomjsまたはHeadless Chromeを依存関係として使用します。

+0

パッケージの開発者として、あなたはおそらく、仲間の開発者が嫌がらせをするのは賢明ではないということに同意するでしょう。あなたが有益な答えを提供するなら、感情的な余分なものが必要ですか? – jdharrison

+0

私はあなたのパッケージではなく、Selenium @ jdharrisonを意味しました。それはタイプミスでした。 – hrbrmstr

+0

そして、このタイプミスは修正されており、他の3つのかなり重要な代替外部技術依存性が追加されています。おそらく将来の間違いと悪用を仮定するでしょうか? – hrbrmstr

関連する問題