R 未从web刮取在数据框中输入值

R 未从web刮取在数据框中输入值,r,web-scraping,rvest,removing-whitespace,R,Web Scraping,Rvest,Removing Whitespace,我的主要目的是从网站中提取内容。我想在本地保存它。网站内容更新后,还应反映本地数据。 我可以从代码中使用的网页中读取数据,现在我想将结果保存到数据框中,以便导出结果。我希望x6的值应该输入到数据框df中,这样我可以将数据框结果导出到文本文件或excel文件中,或者您可以建议任何其他方法从代码中使用的网页中提取数据(网页抓取)。在这种情况下,我希望我的for循环不起作用,因此请任何人帮助我 library(rvest) library(dplyr) library(qdapRegex) # ins

我的主要目的是从网站中提取内容。我想在本地保存它。网站内容更新后,还应反映本地数据。
我可以从代码中使用的网页中读取数据,现在我想将结果保存到数据框中,以便导出结果。我希望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)
库(rvest)
图书馆(dplyr)
库(qdapRegex)#安装程序包(“qdapRegex”)
谷歌%
html_text())
类别(x)

(x1问题似乎在于您创建的是一组带引号的字符串,其中包含“BID_NO”等。如果您试图将值保存到数据帧中,则需要将保存值的变量名保存到数据帧中


df问题似乎是您创建的是一组带引号的字符串。如果您试图将值保存到数据框中,则需要将保存值的变量名保存到数据框中


df使用XPath以所需元素为目标很可能是一条挫折和错误较少的路径:

library(rvest)
library(dplyr)

pg <- read_html("https://bidplus.gem.gov.in/bidresultlists")
针对具有bid#和状态的块标题:

block_header <- html_nodes(blocks, "div.block_header")
退出状态:

html_nodes(block_header, xpath=".//p/b[contains(., 'Status')]/following-sibling::span") %>% 
  html_text(trim=TRUE) -> status
目标和退出开始和结束日期:

html_nodes(blocks, xpath=".//strong[contains(., 'Start Date')]/following-sibling::span") %>%
  html_text(trim=TRUE) -> start_date

html_nodes(blocks, xpath=".//strong[contains(., 'End Date')]/following-sibling::span") %>%
  html_text(trim=TRUE) -> end_date
制作一个数据帧:

data.frame(
  bid_no,
  status,
  start_date,
  end_date,
  items,
  quantity,
  department_name_and_address,
  stringsAsFactors=FALSE
) -> xdf
str(xdf)
## 'data.frame': 10 obs. of  8 variables:
##  $ bid_no                     : chr  "GEM/2018/B/93066" "GEM/2018/B/93082" "GEM/2018/B/93105" "GEM/2018/B/93999" ...
##  $ status                     : chr  "Not Evaluated" "Not Evaluated" "Not Evaluated" "Not Evaluated" ...
##  $ start_date                 : chr  "25-09-2018 03:53:pm" "27-09-2018 09:16:am" "25-09-2018 05:08:pm" "26-09-2018 05:21:pm" ...
##  $ end_date                   : chr  "18-10-2018 03:00:pm" "18-10-2018 03:00:pm" "18-10-2018 03:00:pm" "18-10-2018 03:00:pm" ...
##  $ items                      : chr  "automotive chassis fitted with engine" "automotive chassis fitted with engine" "automotive chassis fitted with engine" "Storage System" ...
##  $ quantity                   : num  1 1 1 2 90 1 981 6 4 376
##  $ department_name_and_address: chr  "Department Name And Address:||Ministry Of Steel Na Kirandul Complex N/a" "Department Name And Address:||Ministry Of Steel Na Kirandul Complex N/a" "Department Name And Address:||Ministry Of Steel Na Kirandul Complex N/a" "Department Name And Address:||Maharashtra Energy Department Maharashtra Bhusawal Tps N/a" ...
##  $ is_ra                      : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
有些投标是“
RA
”的,因此我们还可以创建一个专栏,让我们知道哪些是:

xdf$is_ra <- grepl("/RA/", bid_no)
我将让您将日期转换为
POSIXct
元素

不带解释的连续代码为


此外,这不是Java。
for
循环很少是R中问题的解决方案。而且,您应该仔细阅读正则表达式,因为计算替换空间也是一条充满危险和挫折的路径。

使用XPath针对所需元素可能是一条挫折和错误较少的路径:

library(rvest)
library(dplyr)

pg <- read_html("https://bidplus.gem.gov.in/bidresultlists")
针对具有bid#和状态的块标题:

block_header <- html_nodes(blocks, "div.block_header")
退出状态:

html_nodes(block_header, xpath=".//p/b[contains(., 'Status')]/following-sibling::span") %>% 
  html_text(trim=TRUE) -> status
目标和退出开始和结束日期:

html_nodes(blocks, xpath=".//strong[contains(., 'Start Date')]/following-sibling::span") %>%
  html_text(trim=TRUE) -> start_date

html_nodes(blocks, xpath=".//strong[contains(., 'End Date')]/following-sibling::span") %>%
  html_text(trim=TRUE) -> end_date
制作一个数据帧:

data.frame(
  bid_no,
  status,
  start_date,
  end_date,
  items,
  quantity,
  department_name_and_address,
  stringsAsFactors=FALSE
) -> xdf
str(xdf)
## 'data.frame': 10 obs. of  8 variables:
##  $ bid_no                     : chr  "GEM/2018/B/93066" "GEM/2018/B/93082" "GEM/2018/B/93105" "GEM/2018/B/93999" ...
##  $ status                     : chr  "Not Evaluated" "Not Evaluated" "Not Evaluated" "Not Evaluated" ...
##  $ start_date                 : chr  "25-09-2018 03:53:pm" "27-09-2018 09:16:am" "25-09-2018 05:08:pm" "26-09-2018 05:21:pm" ...
##  $ end_date                   : chr  "18-10-2018 03:00:pm" "18-10-2018 03:00:pm" "18-10-2018 03:00:pm" "18-10-2018 03:00:pm" ...
##  $ items                      : chr  "automotive chassis fitted with engine" "automotive chassis fitted with engine" "automotive chassis fitted with engine" "Storage System" ...
##  $ quantity                   : num  1 1 1 2 90 1 981 6 4 376
##  $ department_name_and_address: chr  "Department Name And Address:||Ministry Of Steel Na Kirandul Complex N/a" "Department Name And Address:||Ministry Of Steel Na Kirandul Complex N/a" "Department Name And Address:||Ministry Of Steel Na Kirandul Complex N/a" "Department Name And Address:||Maharashtra Energy Department Maharashtra Bhusawal Tps N/a" ...
##  $ is_ra                      : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
有些投标是“
RA
”的,因此我们还可以创建一个专栏,让我们知道哪些是:

xdf$is_ra <- grepl("/RA/", bid_no)
我将让您将日期转换为
POSIXct
元素

不带解释的连续代码为


此外,这不是Java。
for
循环很少是R中问题的解决方案。而且,你应该仔细阅读正则表达式,因为计算替换空间也是一条充满危险和挫折的道路。

如果我想从上述网站中的所有网页中提取数据,那么我该怎么做……如果我想提取数据从所有网页在上述网站上,那么我应该怎么做。。。