2017-12-18 1 views
0

RSelenium을 사용하여 여러 개의 .xls 파일을 다운로드하고 있습니다. 다운로드 링크를 클릭하면 파일을 다운로드 할 팝업을 만들지 않도록 지정하는 서버를 설정하기 위해 다음 코드를 사용하여 다소 무리한 해결책을 얻을 수있었습니다. 그러나,없는 것은 내가 101 번째 파일을 다운로드하면 다운로드 팝업 셀레늄이 운전 브라우저에 나타나는 시작 (보고서 (100) .XLS "로 저장), 실패합니다.RSelenium : Chrome에서 파일을 다운로드하는 중 오류가 발생했습니다.

eCaps <- list(
    chromeOptions = 
    list(prefs = list(
     "profile.default_content_settings.popups" = 0L, 
     "download.prompt_for_download" = FALSE, 
     "download.default_directory" = "mydownloadpath" 
    ) 
    ) 
) 

rd <- rsDriver(browser = "chrome", port=4566L, extraCapabilities = eCaps) 

기능을 다음과 같은 다운로드 : 참고로

vote.downloading <- function(url){ 

    #NB: this function assumes browser already up and running, options set correctly 

    Sys.sleep(1.5) 

    browser$navigate(url) 

    down_button <- browser$findElement(using="css", 
            "table:nth-child(4) tr:nth-child(3) a") 
    down_button$clickElement() 


} 

, 사이트 내가 같이로부터 다운로드를 받고 있어요 : http://www.moscow_city.vybory.izbirkom.ru/region/moscow_city?action=show&root=774001001&tvd=4774001137463&vrn=4774001137457&prver=0&pronetvd=null&region=77&sub_region=77&type=427&vibid=4774001137463

링크를 다운로드에 사용되는 것은 러시아어를 모르는 사람들은 "версия для печати"를 읽고

다운로드 링크의 사이트로 연결되는 드롭 다운 메뉴의 링크를 긁는 큰 기능의 일부이기 때문에 대화 상자가 팝업을 시작하고 중단 된 부분부터 픽업을 시작하면 기능을 중지 할 수 없습니다. 다운로드 할 400 개 이상의 파일이 있기 때문에 이것은 또한 매우 귀찮을 것입니다.

시스템 프로필이 101 개의 파일을 모두 표시하지 못하도록 Chrome 프로필 또는 스크래핑 기능을 변경할 수있는 방법이 있습니까? 아니면이 파일들을 다운로드하는 더 좋은 방법이 있습니까?

답변

1

셀레늄에 대한 필요가 없습니다 :

library(httr) 

httr::GET(
    url = "http://www.moscow_city.vybory.izbirkom.ru/servlet/ExcelReportVersion", 
    query = list(
    region="77", 
    sub_region="77", 
    root="774001001", 
    global="null", 
    vrn="4774001137457", 
    tvd="4774001137463", 
    type="427", 
    vibid="4774001137463", 
    condition="", 
    action="show", 
    version="null", 
    prver="0", 
    sortorder="0" 
), 
    write_disk("/tmp/report.xls"), ## CHANGE ME 
    verbose() 
) -> res 

당신이 warn_for_status() 또는 다른 검사를 실행할 수 있도록 내가 객체에를 저장합니다.

더 일반화하기 위해 매개 변수가있는 함수에서이를 감싸는 것이 간단합니다.

+0

환상적! 이 작업을 일반화하고 의미있는 파일 이름을 생성하기가 쉬워야하므로 추가 단계가 필요하지 않습니다. 호기심에서 "http://www.moscow_city.vybory.izbirkom.ru/servlet/ExcelReportVersion"URL을 어떻게 찾았습니까? –

+1

https://portswigger.net/burp/communitydownload를 통해 요청을 라우팅하고 https://github.com/hrbrmstr/burrp를 사용하여 내용을 검사합니다. – hrbrmstr

관련 문제