r - 没有从网络抓取中将值输入到数据框中
问题描述
我的主要目标是从网站中提取内容。我想把它保存在本地。内容应该在网站上更新后,它也应该反映本地数据。
我能够从代码中使用的网页读取数据,现在我想将结果保存到数据框中,以便我可以导出结果。我希望 x6 的值应该输入到数据框 df 中,以便我可以将数据框结果导出到文本文件或 excel 文件中,或者您可以建议任何其他方式从代码中使用的网页中提取数据(网页抓取)。在此我希望我的 for 循环不起作用,所以请任何人帮助我。
library(rvest)
library(dplyr)
library(qdapRegex) # install.packages("qdapRegex")
google <- read_html("https://bidplus.gem.gov.in/bidresultlists")
(x <- google %>%
html_nodes(".block") %>%
html_text())
class(x)
(x1 <- gsub(" ", "", x))
(x2 <- gsub(" ", "", x1))
(x3 <- gsub(" ", "", x2))
(x4 <- gsub(" ", "", x3))
(x5 <- gsub(" ", "", x4))
(x6 <- gsub("\n", "", x5))
class(x6)
length(x6[i])
typeof(x6)
for (i in x6) {
BIDNO <- rm_between(x6[i], "BID NO:", "Status", extract = TRUE)
Status <- rm_between(x6[i], "Status:", "Quantity Required", extract = TRUE)
Quantity_Required <- rm_between(x6[i], "Quantity Required:", "Department Name And Address", extract = TRUE)
Department_Name_And_Address <- rm_between(x6[i], "Department Name And Address:", "Start Date", extract = TRUE)
Start_Date <- rm_between(x6[i], "Start Date:", "End Date", extract = TRUE)
# End_Date <- rm_between(x6[i], "End Date: ", "Technical Evaluation", extract=TRUE)
df <- data.frame("BID_NO", "Status", "Quantity_Required", "Department_Name_Address", "Start_Date")
}
df
View(df)
解决方案
问题似乎是您创建的是一堆带有“BID_NO”等引号的字符串。如果您尝试将值保存到数据框中,则需要将保存值的变量名称保存到数据框中。
df<-data.frame(BID_NO,Status,Quantity_Required,Department_Name_Address,Start_Date)
如果上面创建每个字段的所有代码都是正确的,并且值被保存到这些变量中,您将获得一个 ONE ROW 数据帧,因为它是在 for 循环中创建的,因此每次迭代时您都将覆盖上一个版本。
如果您希望保存多行,final_df
请在循环之前创建。然后
data.frame(rbind(final_df, df))
将在第一次通过时将数据行绑定到空帧,然后每次通过添加一个新行。
但是在循环中创建的任何数据帧都将在每次传递时重新创建并覆盖......并从变量中保存值而不 ' '
在它们周围......
推荐阅读
- android - 在 Flutter 项目中添加 firebase 包时出错
- php - 在 PHP 中获取没有别名的 SQL 连接语句
- sql - 使用存储过程将学生添加到表中,并检查参数是否为假
- oracle - 如何使用 PL/SQL 为多个表创建 ALTER READ ONLY?
- code-signing - 库未加载...代码签名在 macOS 10.15.4 上被阻止
- javascript - 如何在同一个 React 组件中管理多个 setState 调用?
- android - 如何从所有片段中使用工具栏中的 SearchView
- workday-api - Workday Payroll Import_Payroll_Input 如何检查错误
- c# - 如何在无法加载到内存的非常大的文件中进行排序和搜索?
- python - 如何复制已编译的正则表达式?