我正在进行this website的网络抓取项目。
此时我想做的是从这样的网址中删除艺术家姓名:https://lsdb.eu/artists/view/225/
由于艺术家设置为编号225,因此页面存在。但是,https://lsdb.eu/artists/view/226/
不存在,但存在数字高于226的页面。
有没有办法抓取网站以查看哪些https://lsdb.eu/artists/view/xxx/
网址有效?
答案 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)。