【发布时间】:2015-12-16 12:06:54
【问题描述】:
我已经构建了一个函数,它获取一个 url 并在抓取网页后返回所需的结果。功能如下:
library(httr)
library(curl)
library(rvest)
library(dplyr)
sd_cat <- function(url){
cat <- curl(url, handle = new_handle("useragent" = "myua")) %>%
read_html() %>%
html_nodes("#breadCrumbWrapper") %>%
html_text()
x <- cat[1]
#y <- gsub(pattern = "\n", x=x, replacement = " ")
y <- gsub(pattern = "\t", x=x, replacement = " ")
y <- gsub("\\d|,|\t", x=y, replacement = "")
y <- gsub("^ *|(?<= ) | *$", "", y, perl=T)
z <- gsub("\n*{2,}","",y)
z <- gsub(" {2,}",">",z)
final <- substring(z,2)
final <- substring(final,1,nchar(final)-1)
final
#sample discontinued url: "http://www.snapdeal.com//product/givenchy-xeryus-rouge-g-edt/1978028261"
#sample working url: "http://www.snapdeal.com//product/davidoff-cool-water-game-100ml/1339014133"
}
这个函数在包含多个 url 的字符向量上使用 sapply 可以正常工作,但是如果单个 url 被中断,函数会抛出
open.connection(x, "rb") 中的错误:HTTP 错误 404。
我需要一种方法来跳过已停用的网址,以使该功能正常工作。
【问题讨论】:
标签: r web-scraping rvest