【发布时间】:2017-03-02 06:21:42
【问题描述】:
我正在尝试从网页中抓取数据并 rbind 它。
1。从网页抓取数据
for (i in 1:10) {
url <- paste0("https://www.nest.co.uk/pendants?page=",i)
Pandents <- read_html(url)
PanInfos <- html_nodes(Pandents, css = '.fn.name')
PanInfos[1] %>% html_nodes('.brand') %>% html_text()
2。提取“品牌”
BRANDS <- PanInfos %>% html_nodes('.brand') %>% html_text()
3。删除 unicode 并提取“SHORTNAMES”
panShortnames <- PanInfos %>% html_nodes('.short-name') %>% html_text()
SHORT1 <- gsub(pattern = '\U00A0', replacement = " ", panShortnames)
SHORTNAMES <- gsub(pattern = '\U2013', replacement = "-", SHORT1)
4。提取“价格”
PriceInfos <- html_nodes(Pandents, css = '.info')
PRICE <- PriceInfos %>% html_nodes('.price') %>% html_text()
5。使用“IF”制作数据框
if ( i == 1) {
data1<- data.frame(BRANDS, SHORTNAMES, PRICE)
}
else if (i ==2) {
data2<- data.frame(BRANDS, SHORTNAMES, PRICE)
}
###......
else (i ==10) {
data10<- data.frame(BRANDS, SHORTNAMES, PRICE)
}
}
6。制作最终数据框
FINAL <- rbind(data1, data2, data3, data4, data5, data6, data7, data8, data9,data10)
这是我第一次练习 R,现在我终于知道 R 真的很复杂。 我想做的是从网页中提取数据并制作一个 csv 文件。 但它根本不起作用。我真的需要你的建议。我的怎么了? 还有没有更简单的方法
【问题讨论】:
-
“但它根本不起作用。”它怎么不起作用?请提供错误信息。
-
data.frame(BRANDS, SHORTNAMES, PRICE) 中的错误:参数暗示不同的行数:24, 0
-
而在此之前,没有创建data1、data2....data10数据框。
-
错误和确凿的信息(比如你的最后两个 cmets)应该直接包含在问题中。如果没有跳过评论,通常会略过评论,因此最好/仅在问题本身中保留重要的细节。
-
失败时
i的值是多少?当命令失败时,组件(例如,BRAND、SHORTNAMES和PRICE)是什么样的?他们应该看起来如何(如果错误)?