如何从网站获取所有有效网址?

时间:2017-08-09 23:19:14

标签: html r web-scraping rvest httr

我正在进行this website的网络抓取项目。

此时我想做的是从这样的网址中删除艺术家姓名:https://lsdb.eu/artists/view/225/

由于艺术家设置为编号225,因此页面存在。但是,https://lsdb.eu/artists/view/226/不存在,但存在数字高于226的页面。

有没有办法抓取网站以查看哪些https://lsdb.eu/artists/view/xxx/网址有效?

1 个答案:

答案 0 :(得分:0)

站点响应HTTP HEAD请求,这些请求通常对站点更友好,因为它们通常占用更少的资源(至少不返回任何内容,因此节省了时间和带宽)。您可以执行以下操作:

library(httr)

is_valid_artist <- function(x) {
  httr::status_code(httr::HEAD(sprintf("https://lsdb.eu/artists/view/%s/", x)))
}

is_valid_artist("225")
## [1] 200

is_valid_artist("226")
## [1] 404 

is_valid_artist("42437")
## [1] 200

is_valid_artist("100000000")
## [1] 404

如果您选择进行一系列顺序查找,请在请求之间添加一些暂停,因为您仍然可以对网站执行操作。对于完整内容,建议5-10秒,但对于HEAD请求,您可以在道德上使其1秒(IMO)。