Webscraping World Контрольный список отдельных семейств растений - PullRequest
0 голосов
/ 04 апреля 2019

Презентация

Я ищу решение для веб-утилизации этого веб-сайта http://wcsp.science.kew.org/reportbuilder.do?method=Reset. Я хотел бы просмотреть веб-страницу каждого сгенерированного контрольного списка, выбрав семейство Orchidaceae и для каждого рода (см. веб-сайт). (примечание: в этом примере я выбираю только роды от А до Б. Я планирую использовать цикл для постепенного выбора каждой модальности).

Проблема

Я могу выбрать семейство 'Orchidaceae' (см. Код), но не могу выбрать род таким же образом.Возможно, потому что список родов генерируется после выбора семейства.


Код

Итак, я использую Rselenium , rvest и xml2 R упаковывают таким образом:

library(RSelenium)
library(rvest)
library(xml2)
library(tidyverse)

system('sudo docker pull selenium/standalone-firefox')
system('sudo docker run -d -p 4445:4444 selenium/standalone-firefox')
remDr <- RSelenium::remoteDriver(remoteServerAddr = "localhost",
                                 port = 4444L,
                                 browser = "firefox")
remDr$open()


remDr$navigate("http://wcsp.science.kew.org/reportbuilder.do?method=Reset")

remDr$screenshot(display = TRUE) #Screenshot

element<- remDr$findElement(using = 'css selector', "#family > option:nth-child(149)")
element$clickElement() #Click to select the family
element2<- remDr$findElement(using = 'css selector', "#genus > option:nth-child(2)")
element2$clickElement() #Click that should choose the genus range (A to B)
remDr$screenshot(display = TRUE)

html <- xml2::read_html(remDr$getPageSource()[[1]])
xml2::write_html(html, "scrap_page.html")

У кого-нибудь есть идеи о том, что я пропустил?


Сессия

    > sessionInfo()
    R version 3.5.1 (2018-07-02)
    Platform: x86_64-pc-linux-gnu (64-bit)
    Running under: Ubuntu 18.10

    Matrix products: default
    BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.8.0
    LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.8.0

    locale:
     [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C               LC_TIME=fr_FR.UTF-8       
     [4] LC_COLLATE=fr_FR.UTF-8     LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
     [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
    [10] LC_TELEPHONE=C             LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       

    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     

    other attached packages:
     [1] forcats_0.4.0   stringr_1.4.0   dplyr_0.8.0.1   purrr_0.3.0     readr_1.3.1    
     [6] tidyr_0.8.2     tibble_2.1.1    ggplot2_3.1.0   tidyverse_1.2.1 rvest_0.3.2    
    [11] xml2_1.2.0      RSelenium_1.7.5

    loaded via a namespace (and not attached):
     [1] tidyselect_0.2.5 haven_2.1.0      lattice_0.20-35  colorspace_1.4-0 generics_0.0.2  
     [6] yaml_2.2.0       XML_3.98-1.17    rlang_0.3.3      pillar_1.3.1     glue_1.3.0      
    [11] withr_2.1.2      selectr_0.4-1    rappdirs_0.3.1   semver_0.2.0     modelr_0.1.4    
    [16] readxl_1.3.0     plyr_1.8.4       munsell_0.5.0    binman_0.1.1     gtable_0.2.0    
    [21] cellranger_1.1.0 caTools_1.17.1.2 wdman_0.2.4      curl_3.3         broom_0.5.1     
    [26] Rcpp_1.0.1       openssl_1.3      backports_1.1.3  scales_1.0.0     jsonlite_1.6    
    [31] askpass_1.1      hms_0.4.2        stringi_1.2.4    grid_3.5.1       cli_1.1.0       
    [36] tools_3.5.1      bitops_1.0-6     magrittr_1.5     lazyeval_0.2.2   crayon_1.3.4    
    [41] pkgconfig_2.0.2  subprocess_0.8.3 lubridate_1.7.4  assertthat_0.2.1 httr_1.4.0      
    [46] rstudioapi_0.9.0 R6_2.4.0         nlme_3.1-137     compiler_3.5.1  
...