r - 网页抓取时的 seleniumR 和 Purr 错误
问题描述
我正在使用 rSelenium 在carsales.com.au
. 这map_df
部分代码在过去运行得非常好,可以轻松处理空字段。但是这个网站抛出了以下错误:
Error: Internal error in `vec_assign()`: `value` should have been recycled to fit `x`.
我已经对此错误进行了一些研究,但它超出了我的范围。
这是代码:
library(tidyverse)
library(rvest)
library(RSelenium)
#navigate to homepage and get html
rD <- RSelenium::rsDriver(browser="firefox", port= 4845L)
remDr <- rD[["client"]]
# - Manually Calculate pages (website uses an offset of 12 per page)
pages <- seq(from = 0, to = 770, by = 12)
cars <- tibble()
for (i in pages) {
#create URLs to loop over
url <- 'https://www.carsales.com.au/cars/ford/territory/'
url <- print(paste0(url,'?offset=', i))
#Navigate to URLs
remDr$navigate(url)
soup <- remDr$getPageSource()
soup <- xml2::read_html(soup[[1]])
data <- soup %>%
html_nodes('div.listing-wrapper') %>%
map_df(~list(Model = html_nodes(.x, 'div.col > h3') %>%
html_text() %>%
{if(length(.) == 0) NA else .},
Price = html_nodes(.x, '.price > a') %>%
html_text() %>%
{if(length(.) == 0) NA else .},
Deets = html_nodes(.x, '.key-details') %>%
html_text() %>%
{if(length(.) == 0) NA else .},
sellerType = html_nodes(.x, '.seller-type' ) %>%
html_text() %>%
{if(length(.) == 0) NA else .},
sellerLoc = html_nodes(.x, '.seller-location') %>%
html_text() %>%
{if(length(.) == 0) NA else .}
)
)
cars <- as_tibble(rbind(cars, data))
}
我感谢您对此项目的任何帮助。
干杯
解决方案
推荐阅读
- database - 如何在中等博客文章等文本中保存图像
- flutter - 如何在嵌套滚动视图中使用定位滚动列表
- google-sheets - 如何在包含时间的日期列表中过滤时间范围或时间范围?
- xamarin - Xamarin Android - 在 Google-Maps 之后打开 WebView:应用程序在模拟器中崩溃
- java - java poi HSSFsheet 如何添加包含图片的页眉和页脚?
- node.js - 在NodeJS中注册用户后我可以存储图像吗?
- c++ - 我编写了一个程序,它接受二维矩阵的行和列,但在执行时突然退出
- c# - 如何在 .net 核心中的每个操作 url 中附加查询字符串?
- html - 使侧边栏位于仪表板内容旁边
- linux - Picom 内核模糊