网络抓取多个网站

时间:2017-08-21 11:31:45

标签: r web-scraping rvest

我有访问存储在csv中的亚马逊网站的数据,并将R作为data.frame读入对象“DataAmazon”

DataAmazon <- read.csv("URLs.csv", header = TRUE, comment.char = "", 
stringsAsFactors = FALSE)

head(DataAmazon,2)  #Top 2 rows of data    
https://www.amazon.co.uk/gp/product/B01L8PLHTI/ref=s9_acsd_hps_bw_c_x_1_w?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=merchandised-search-6&pf_rd_r=Z4049X520KCMMB3CNRVG&pf_rd_r=Z4049X520KCMMB3CNRVG&pf_rd_t=101&pf_rd_p=83565b89-9e07-44df-a55a-95a45c9b49b5&pf_rd_p=83565b89-9e07-44df-a55a-95a45c9b49b5&pf_rd_i=509908031

https://www.amazon.co.uk/United-Colors-Benetton-2OZ1538Q0-Jacket/dp/B01IP45CAK/ref=sr_1_1?m=A3P5ROKL5A1OLE&s=clothing&ie=UTF8&qid=1503313547&sr=1-1&nodeID=1730756031&psd=1

我正在尝试从dataframe的第一个元素中提取下面的网页标题

url <- DataAmazon[1,]

Amazon_Normal_Text1 <- url %>%read_html() %>%html_nodes("title") %>% html_text()

我最初尝试使用for循环是

for (i in 1:nrow(DataAmazon))
{
  url <- DataAmazon[i, ]
  Amazon_Normal_Text1 <- url %>%read_html() %>%html_nodes("title") %>% html_text()
}

如何使用apply函数族循环遍历包含大约100行URL的csv文件,并将输出保存为另一个文件。

1 个答案:

答案 0 :(得分:1)

您可以创建一个与最后一段代码完全相同的函数

amazonTitle <- function(x){
    x %>%read_html() %>% html_nodes("title") %>% html_text()
}

然后使用apply函数执行以下操作:

 apply(DataAmazon, 1, amazonTitle)