Je suis en train de gratter une table.R Scraping - ignorer l'erreur HTML 500 en boucle
dput(head(temp_data))
structure(list(link = c("http://ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4030998342636",
"http://ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4030998342636",
"http://ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4030998378860",
"http://ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4030998346429",
"http://ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4030998346429",
"http://ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4030998346429"
)), .Names = "link", row.names = c(NA, 6L), class = "data.frame")
Mon code:
new_function <- function() {
for (i in 1:nrow(temp_data)) {
temp_data_point <- temp_data[i, ]
file <- read_html(temp_data_point)
tables <- html_nodes(file, "table")
table1 <- html_table(tables[8], fill = TRUE)
table2 <- as.data.frame(table1)
table2 <- table2[15:24 , 1:2]
colnames(table2)[1] <- "variables"
colnames(table2)[2] <- "results"
table2[1, 1] <- "name"
table2[2, 1] <- "legal_form"
table2[3, 1] <- "industry"
table2[4, 1] <- "tax_num"
table2[5, 1] <- "id"
table2[6, 1] <- "account_num"
table2[7, 1] <- "bank_name"
table2[8, 1] <- "address"
table2[9, 1] <- "location"
table2[10, 1] <- "phone"
test2 <- spread(table2, variables, results)
temp_table3[i, ] <- test2
}
return(temp_table3)
}
Le problème se pose lorsque l'un ne contient pas de table de l'URL. Par exemple:
- lien de travail: http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4002989121429
- lien de travail non: http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4019999105375
Avec le lien non-travail je reçois:
Erreur dans open.connection (x, « rb "): Erreur HTML 500
Des idées comment je peux implémenter une instruction if, qui vérifie si le lien contient la table, et sinon, passez à la prochaine itération? Peut-être un TryCatch?