需要使用rvest来废弃动态内容

bvk5enib  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(111)

我得从一个叫独角兽拍卖的拍卖网站上删除数据。

当我尝试使用rvest来做这件事时,我可以得到的一切都是拍卖标题和URL,但我也需要它的开始和结束日期。当我尝试找到它的CSS类时,我发现的是以下代码行:

我是abre刮它使用RSelenium,因为我发现在这里堆栈溢出.但我的老板希望它只是与rvest.他说,这是可能的,但我找不到任何有用的youtube视频或文章.
我不想让任何人只是给予我的解决方案,我只是需要一些帮助!

qvtsj1bj

qvtsj1bj1#

首先在brwoser的开发工具中从页面源和/或网络响应中搜索其中的一些值,例如“2023”将引导您找到正确的位置。
页面视图变量嵌入在<script>...</script>元素中,

<script type="text/javascript">
    viewVars = {"escaper":{},...,"auctions": {"result_page":[{...,"time_start": "2023-11-06T01:00:00Z",...};
</script>

字符串
该JavaScript表达式只是一个单一的赋值,当从开始(viewVars = {)和结束(;)删除几位时,结果字符串可以解析为JSON:

library(rvest)
library(stringr)
library(dplyr)

upcominng <- 
  read_html("https://bid.unicornauctions.com/") |>
  html_element(xpath = "//script[contains(text(),'viewVars =')]") |>
  html_text() |>
   # remove few bits from javascript to to make parseble as JSON
  str_remove("^\\s+viewVars =") |>
  str_remove(";\\s+$") |>
  jsonlite::fromJSON() |>
   # extract results_page from the list
  purrr::pluck("upcomingAuctions", "result_page") |>
  as_tibble()

select(upcominng, title, contains("time")) |> glimpse()
#> Rows: 4
#> Columns: 9
#> $ title                    <chr> "November 'No Reserves' Unicorn Auction 2023"…
#> $ time_start               <chr> "2023-11-06T01:00:00Z", "2023-11-13T01:00:00Z…
#> $ time_start_live_auction  <lgl> NA, NA, NA, NA
#> $ time_start_proxy_bidding <lgl> NA, NA, NA, NA
#> $ timezone                 <chr> "America/Chicago", "America/Chicago", "Americ…
#> $ effective_end_time       <chr> "2023-11-13T00:00:00Z", "2023-11-20T00:00:00Z…
#> $ extended_end_time        <lgl> NA, NA, NA, NA
#> $ realtime_server_url      <lgl> NA, NA, NA, NA
#> $ is_times_the_money       <lgl> FALSE, FALSE, FALSE, FALSE


创建于2023-11-12使用reprex v2.0.2

相关问题