【问题标题】:Scrape "aspx" page with R用 R 刮掉“aspx”页面
【发布时间】:2018-10-17 13:23:20
【问题描述】:

有人可以帮助我或给我一些建议如何从这个网址刮桌子:https://www.promet.si/portal/sl/stevci-prometa.aspx

我尝试使用说明和软件包rvesthttr and html,但对于这个特定站点没有任何成功。谢谢你。

【问题讨论】:

  • 您确定可以抓取该页面吗?你能发布你的尝试吗?
  • 那么,问题出在哪里?你的代码和错误是什么?
  • @s_t robots.txt 似乎确实如此,但我无法确定任何服务条款。该站点使用相对最新的共享点后端,它严重混淆了动态页面资源的加载和显示。您可能需要使用 splashr 或 RSelenium&friends 来获取内容
  • 哇。那个网站真的很邪恶。 XHR POST 从计算的共享点视图状态发布一个 base64 编码值,响应是自定义 javascript 解码的二进制内容。您肯定会想要使用 splashr 或 RSelenium 并确保在页面上稍等片刻,并且可能会虚拟移动鼠标,因为我相信有一些 javascript 可以检查人类。
  • 另外,不要将该站点留在浏览器中。它有一些窃听脚本,它尝试每分钟左右刷新一次该表,每次拉入超过 1 MB。但是,promet.si/portal/sl/etd.aspx 表示他们有您可能还想调查的 API。

标签: r web-scraping rvest httr


【解决方案1】:

这应该可以帮助您入门:

library(RSelenium)
library(wdman)
library(seleniumPipes)
library(rvest)
library(tidyverse)

selServ <- selenium(verbose = FALSE)
selServ$log() # find the port
remDr <- remoteDr(browserName = "chrome", port = 4567L)

remDr %>% 
  go("https://www.promet.si/portal/sl/stevci-prometa.aspx")

Sys.sleep(5)

pg <- getPageSource(remDr)

html_node(pg, xpath=".//div[@id='ctl00_mainContent_ctl00_StvContainer']/table") %>% 
  html_table() %>% 
  tbl_df()
## # A tibble: 1,239 x 10
##    X1    X2            X3     X4                       X5     X6      X7     X8    X9     X10  
##    <lgl> <chr>         <chr>  <chr>                    <chr>  <chr>   <chr>  <chr> <chr>  <lgl>
##  1 NA    Lokacija      Cesta  Smer                     Pas    Števil… Hitro… Razm… Stanje NA   
##  2 NA    Ajdovščina    R2-444 vzhod - zahod            ""     60      64     81,7  Norma… NA   
##  3 NA    Ajdovščina    R2-444 zahod - vzhod            ""     12      62     371,6 Norma… NA   
##  4 NA    Ajdovščina 2  R2-444 Ajdovščina - Selo        ""     36      67     117,8 Norma… NA   
##  5 NA    Ajdovščina 2  R2-444 Ajdovščina - Selo        ""     12      60     787,1 Norma… NA   
##  6 NA    Ajdovščina AC HC-H4  Nova Gorica - Vipava     vozni  96      100    31,5  Norma… NA   
##  7 NA    Ajdovščina AC HC-H4  Nova Gorica - Vipava     prehi… 36      124    120,7 Norma… NA   
##  8 NA    Ankaran       R2-406 Križ. Moretini - Ankaran ""     96      59     29    Norma… NA   
##  9 NA    Ankaran       R2-406 Ankaran - Križ. Moretini ""     12      57     292,1 Norma… NA   
## 10 NA    Apače         R2-438 Trate - Gornja Radgona   ""     24      58     110,6 Norma… NA   
## # ... with 1,229 more rows

【讨论】:

    【解决方案2】:

    网站使用权翻译“使用权:www.promet.si 网站上包含的所有信息和图像均受版权保护和其他形式的知识产权保护。这些网页上发布的文件可能仅出于非商业目的复制,并且还必须保留所有版权或其他权利的警告。在每次复制时,都应将“国道交通信息中心”列为来源。”

    我不确定这是否意味着允许出于非商业目的进行抓取。

    无论如何,感谢您的警告@s_t 并特别感谢您提供漂亮代码@hrbrmstr 的答案。

    【讨论】:

      猜你喜欢
      • 2015-04-02
      • 2017-08-15
      • 1970-01-01
      • 2020-04-14
      • 2014-04-02
      • 1970-01-01
      • 2019-06-04
      • 2014-02-08
      • 2014-03-14
      相关资源
      最近更新 更多