r - 要替换的项目数不是替换长度的倍数。背心刮
问题描述
我知道我的 for 循环有一些问题,但需要有人找出问题所在。
这是两个页面,我想在每个页面中抓取 100 个链接。请注意,您需要凭据才能进入那里。但我在这里写它们只是为了查看所有代码:
urls <- c("http://cli.linksynergy.com/cli/publisher/links/linkfinder.php?mode=basic&keyword=linux&exact=&any=&exclude=&mid=-1&cat=&sort=&retailprice_sort=&productname_sort=&shortdesp_sort=&categoryname_sort=&keyword_sort=&linklang=pt_BR&currec=1&max=100",
"http://cli.linksynergy.com/cli/publisher/links/linkfinder.php?mode=basic&keyword=linux&exact=&any=&exclude=&mid=-1&cat=&sort=&retailprice_sort=&productname_sort=&shortdesp_sort=&categoryname_sort=&keyword_sort=&linklang=pt_BR&currec=101&max=100")
我用rvest
包来刮它们。这是 for 循环:
enlaces <- vector("character", length = length(urls))
for(i in seq_along(urls)){
Sys.sleep(1)
derby <- read_html(jump_to(session, urls[i]))
enlaces[i] <- derby %>%
html_nodes(".td_auto_left a:nth-child(1)") %>%
html_attr('href')
}
理想情况下,我会得到一个由 200 个链接组成的向量,为存储在urls
.
但是,我得到了错误Number of items to replace is not a multiple of replacement length
。
我认为问题可能在于enlaces
每次迭代中只期望一个对象。但是它创建了 100 并且不知道如何进行。任何想法?
解决方案
我终于通过创建 alist
而不是 a 来解决我的问题vector
,并在for
循环中使用双括号。
enlaces <- list()
for(i in seq_along(urls)){
Sys.sleep(1)
derby <- read_html(jump_to(session, urls[i]))
enlaces[[i]] <- derby %>%
html_nodes(".td_auto_left a:nth-child(1)") %>%
html_attr('href')
}
推荐阅读
- python - 遍历目录树并将日期戳附加到文件名
- android - 科尔多瓦平台添加android不起作用,如何使用科尔多瓦编译?离子项目
- postgresql - BigQuery 脚本,通过联合查询将 google cloud postgres 表复制到 BigQuery
- scala - Error informing a Timestamp field which comes from a file .parquet
- swift - 如何在带有 HStack 的 SwiftUI 视图中使所有视图的高度相同?
- excel - Getting Text Value from Userform Text Box to Current Selected Cell in Worksheet
- tableau-api - No server drop dwon menu showing in Tableau
- python - 无法通过 Paramiko SSH 发送 AT 命令
- reactjs - React Native firebase analytics app install tracking
- laravel - 如何验证 Laravel 中的关系属性?