Rvest网络抓取有限结果(R) [英] Rvest webscraping limited results (R)

查看:0
本文介绍了Rvest网络抓取有限结果(R)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Web抓取的新手,我尝试过几种跨多个页面执行rvest的方法。不知何故,它仍然不起作用,我只得到了15个结果,而不是这个类别中列出的207种产品。我做错了什么?

library(rvest)
all_df<-0
library(data.table)

for(i in 1:5){
  url_fonq <- paste0("https://www.fonq.nl/producten/categorie-lichtbronnen/?p=",i,sep="")
  webpage_fonq <- read_html(url_fonq)
  head(webpage_fonq)

  product_title_data_html <- html_nodes(webpage_fonq, '.product-title')
  product_title_data <- html_text(product_title_data_html)
  head(product_title_data)
  product_title_data<-gsub("
","",product_title_data)
  product_title_data<-gsub(" ","",product_title_data)
  head(product_title_data)
  length(product_title_data)

  product_price_data_html <- html_nodes(webpage_fonq, '.product-price')
  product_price_data <- html_text(product_price_data_html)
  head(product_price_data)
  product_price_data<-gsub("
","",product_price_data)
  product_price_data<-gsub(" ","",product_price_data)
  head(product_price_data)
  product_price_data
  length(product_price_data)
  fonq.df <- data.frame(Procuct_title = product_title_data, Price = product_price_data)
  all_df <-list(fonq.df)
  }

final2<-rbindlist(all_df,fill = TRUE)

View(final2)

推荐答案

问题是您只保留从网站的最后页面中抓取的数据,因此您只存储了最后15个产品。

因此,不要在每次迭代中覆盖all_df变量

all_df <- list(fonq.df)

all_df末尾追加fonq.df数据帧:

all_df <- bind_rows(all_df, fonq.df)

这是我的完整解决方案:

library(rvest)
all_df <- list()
library(dplyr)

for(i in 1:5){

  url_fonq <- paste0("https://www.fonq.nl/producten/categorie-lichtbronnen/?p=",i,sep="")
  webpage_fonq <- read_html(url_fonq)
  head(webpage_fonq)

  product_title_data_html <- html_nodes(webpage_fonq, '.product-title')
  product_title_data <- html_text(product_title_data_html)
  head(product_title_data)
  product_title_data<-gsub("
","",product_title_data)
  product_title_data<-gsub(" ","",product_title_data)
  head(product_title_data)
  length(product_title_data)

  product_price_data_html <- html_nodes(webpage_fonq, '.product-price')
  product_price_data <- html_text(product_price_data_html)
  head(product_price_data)
  product_price_data<-gsub("
","",product_price_data)
  product_price_data<-gsub(" ","",product_price_data)
  head(product_price_data)
  product_price_data
  length(product_price_data)
  fonq.df <- data.frame(Procuct_title = product_title_data, Price = product_price_data)
  all_df <-bind_rows(all_df, fonq.df)
}

View(all_df)

这篇关于Rvest网络抓取有限结果(R)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆