代码之家  ›  专栏  ›  技术社区  ›  Lazer

Rvest XML网页抓取

  •  2
  • Lazer  · 技术社区  · 7 年前

    我是一个初学者,我有刮的问题。

    我需要为一些客户获取有关活动/非活动VEIS编号的数据。 现在,我只想尝试一个。 在网站上,我必须:设置值并发送表单,然后浏览器重定向到下一页,在那里我可以找到一个有趣的日期。

    下面是我发送的代码。 也许有人可以帮忙。

    library(rvest)
    library(XML)
    
    url <- 'http://ec.europa.eu/taxation_customs/vies/vatResponse.html? 
    locale=pl'
    session1 <- html_session(url)
    form1 <-html_form(session1)
    form1
    
    date <- set_values(form1[[1]], requesterMemberStateCode = "AT- 
    Austria",requesterNumber = "4324")
    date
    
    set <- submit_form(session = session1,form = date)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   GGamba    7 年前

    首先,你不需要 XML 包裹 rvest 够了。

    你的表单提交部分几乎正确,只是输入了错误的字段名。

    library(rvest)
    #> Loading required package: xml2
    
    url <- 'http://ec.europa.eu/taxation_customs/vies/vatResponse.html?locale=pl'
    session1 <- html_session(url)
    form1 <-html_form(session1)
    form1[[1]]
    #> <form> 'vowRequest' (POST vatResponse.html)
    #>   <select> 'memberStateCode' [0/29]
    #>   <input text> '': --
    #>   <input text> 'number': 
    #>   <input text> 'traderName': 
    #>   <select> 'traderCompanyType' [0/0]
    #>   <input text> 'traderStreet': 
    #>   <input text> 'traderPostalCode': 
    #>   <input text> 'traderCity': 
    #>   <select> 'requesterMemberStateCode' [0/30]
    #>   <input text> '': 
    #>   <input text> 'requesterNumber': 
    #>   <input hidden> 'action': check
    #>   <input submit> 'check': Weryfikuj
    
    date <- set_values(form1[[1]], memberStateCode = "AT", number = "4324")
    
    set <- submit_form(session = session1,form = date)
    #> Submitting with 'NULL'
    

    之后,提取您感兴趣的值很容易:

    set %>% 
      read_html() %>% 
      html_table(fill = TRUE) %>% 
      purrr::pluck(1) %>% 
      dplyr::slice(4:n()) %>% 
      dplyr::select(1:2)
    #> # A tibble: 6 x 2
    #>   X1                      X2                 
    #>   <chr>                   <chr>              
    #> 1 Państwo Członkowskie    AT                 
    #> 2 Numer VAT               AT 4324            
    #> 3 Data zapytania          2018/05/17 14:33:10
    #> 4 Nazwa                   ---                
    #> 5 Adres                   ---                
    #> 6 Identyfikator zapytania ""
    

    创建日期:2018年5月17日 reprex package (v0.2.0)。