nikolajcandellari / APPR-2017-18

Repozitorij z gradivi za predmet Analiza podatkov s programom R v študijskem letu 2017/18
MIT License
0 stars 0 forks source link

pridobivanje podatkov iz spletne strani #3

Closed nikolajcandellari closed 6 years ago

nikolajcandellari commented 6 years ago

Zanima me če obstaja kakšen lahek način, da bi prišel do vsebine na spletni strani (stran je v html obliki) katera pa ni v nobenem "tag-u".

iz strani bi rad pridobil podatek o naslovu gasilskega društva pa imam pri tem problem saj ravno del besedila ki ga iščem ni v nobenem "tag-u". primer html zapisa:

ADLEŠIČI

--   |

  | Kategorija:I. kategorije, prostovoljna GE

Lokacija:ADLEŠIČI 13 B, 8341 ADLEŠIČI
Telefon:031305835
E-mail:pgdadlesici@gmail.com
Web:http://www.pgdadlesici.si
  |
  |

spletna stran: http://www.gasilec.net/belokranjska-regija

nikolajcandellari commented 6 years ago
<h2>ADLEŠIČI</h2>
--
  | <div>
  | <span class='label'>Kategorija:</span>I. kategorije, prostovoljna GE<br/><br/><span class='label'>Lokacija:</span>ADLEŠIČI 13 B, 8341 ADLEŠIČI<br /><span class='label'>Telefon:</span>031305835<br /><span class='label'>E-mail:</span><a href='mailto:pgdadlesici@gmail.com'>pgdadlesici@gmail.com</a><br /><span class='label'>Web:</span><a target='_blank' href='http://www.pgdadlesici.si'>http://www.pgdadlesici.si</a><br />
  | </div>
  | </div>
jaanos commented 6 years ago

Nekaj takega bi šlo:

link <- "http://www.gasilec.net/belokranjska-regija"
drustva.html <- html_session(link) %>% read_html() %>%
  html_nodes(xpath="//div[contains(@class, 'drustvo')]")
drustva <- data.frame(drustvo = drustva.html %>% html_nodes(xpath="./h2") %>% html_text(),
                      naslov = drustva.html %>% html_nodes(xpath="./div/text()[3]") %>% html_text(),
                      stringsAsFactors = FALSE)

V notaciji xpath lahko torej uporabiš text(), da dobiš seznam delov besedila neposredno pod značko - želeni del potem dobiš pod ustreznim indeksom. Na podoben način lahko seveda pridobiš še ostale podatke s strani.

jaanos commented 6 years ago

Mimogrede: opažam, da ima zadnje društvo v vsaki zvezi pod class vrednost drustvo last, tako da sem posodobil zgornjo kodo tako, da išče vse značke, katerih class vsebuje drustvo.