问题描述
我正在尝试从German Rakuten网站上抓取数据。 Rakuten公司是日本知名的企业,通过互联网销售各种商品。问题在于他们针对不同的国家采用不同的市场策略。例如,在美国,人们在支付所谓的订阅费之前就无法获得产品。在德国,情况有所不同,可以立即获得产品和价格。因此,乐天的链接似乎已被标记为地理标记,即,如果从另一个目标登录,则无法看到内容。此序言对于每个尝试遵循我的步骤并遇到连接错误的人都很重要。
好的,这样说,我想读取数据并将其保存到数据框中。
这是我的初始代码:
library(rvest)
library(purrr)
library(dplyr)
rakuten <- "https://www.rakuten.de/suchen/kitchenAid?category=0"
ra_html <- read_html(rakuten)
title <- html_nodes(ra_html,".vw-productCard .name")
price <- html_nodes(ra_html,".vw-productCard .price .actual")
discount <- html_nodes(ra_html,".vw-productCard .thumb .discount .text")
正如人们所看到的,我想刮擦产品说明(标题对象),价格(价格对象)和折扣可用性(折扣对象)(如果有)。他们销售的每种产品总是有描述和价格(我正在查看KitchenAid的价格),但是折扣很少出现。
然后我解析数据:
urlrakuten <- sprintf("https://www.rakuten.de/suchen/kitchenAid?category=0",1:10)
#define empty data frame to store all data
alllistings <- data.frame()
for (i in urlrakuten){
print(i)
#read the page just once
page <- read_html(i)
# parse titles
title <- page%>%html_nodes('.vw-productCard .name') %>% html_text()
# parse prices
price <- page %>% html_nodes('.vw-productCard .price .actual') %>% html_text()
# parse discounts
discount <- page %>% html_nodes('.vw-productCard .thumb .discount .text') %>% html_text()
#create temporary dataframe to store data from this loop
tempdf <- data.frame(title,price,discount)
#combine temp with all data
alllistings <- rbind(alllistings,tempdf)
}
它与前两个对象配合使用非常好,但对最后一个(折扣)却不起作用。第一页只有四个折扣,R刮掉所有折扣,然后用这四个值的重复填充其余行,请参见我的输出:
我肯定会丢失一些东西,但我不知道如何解决。我希望将相同的输出与第三列值组织到它们所属的行中,其余的仅用NA填充。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)