Ich kratze einen Tisch.R Scraping - überspringen HTML-Fehler 500 in Schleife
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")
Mein 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)
}
Das Problem tritt auf, wenn eine der URL keine Tabelle enthalten. Zum Beispiel:
- Arbeits Link: http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4002989121429
- Nichtarbeits Link: http://www.ujp.gov.mk/mk/prebaruvanje_pravni_lica/prikazi?edb=MK4019999105375
Mit dem nicht funktionierenden Link erhalte ich:
Fehler in open.connection (x, „rb "): HTML - Fehler 500
Irgendwelche Ideen, wie ich eine if - Anweisung implementieren kann, die überprüft, ob der Link die Tabelle enthält, und wenn nicht, springen Sie zum nächste Iteration? Vielleicht ein TryCatch?