Seite 2 von 2

Re: Problem bei verbindung zu HTML

Verfasst: Fr Nov 23, 2018 6:52 pm
von EDi
Kramer hat geschrieben: Fr Nov 23, 2018 5:47 pm Habe es mit Docker gelöst, danke für deine Hilfe.
:?: Kannst du mit uns teilen wie eine containerisierung dein web-scraping Problem gelöst hat?
Kann mir das gerade nicht vorstellen...

Re: Problem bei verbindung zu HTML

Verfasst: Sa Nov 24, 2018 10:01 am
von student
Würdest Du beschreiben, wie Du das Problem gelöst hast?

Re: Problem bei verbindung zu HTML

Verfasst: Sa Nov 24, 2018 6:03 pm
von EDi
Na das problem ist ja, dass die Daten von einem script generiert werden.
Man also nicht direkt scrapen kann.
Man könnte vielleicht das skript in R ausführen (V8 paket z.b.) und danach scrapen?

Im docker container ist bestimmt selenium oder phantomjs oder beides...

Re: Problem bei verbindung zu HTML

Verfasst: Sa Nov 24, 2018 10:58 pm
von Kramer
Moin,

also ich habe bei Docker eingegeben:

Code: Alles auswählen

docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.0
Danach bei R:

Code: Alles auswählen

remDr <- RSelenium::remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L)
remDr$open(silent = T)

url1 <- "http://www.boerse-frankfurt.de/anleihen/kurshistorie/Inh-Schv_v20122019-Anleihe-2019-AT0000A0U9J2/FSE/1.5.2017_19.11.2018#Kurshistorie"
remDr$navigate(url1)
pageSource <- read_html(remDr$getPageSource()[[1]])
dt <- html_table(html_nodes(pageSource, ".table"), fill = T)

Funktioniert auch, aber folgendes Problem:

Code: Alles auswählen

URL_1<- structure(list(carb = c('000A0U9J2', '000A0V7D8', '000A0VL70', '000A0VLS5'), optden = c('http://www.boerse-frankfurt.de/anleihen/kurshistorie/Inh-Schv_v20122019-Anleihe-2019-AT0000A0U9J2/FSE/1.5.2017_19.11.2018#Kurshistorie', 
                                                                                  'http://www.boerse-frankfurt.de/anleihen/kurshistorie/Strabag_SEEO-Schuldverschr_201219-Anleihe-2019-AT0000A0V7D8/FSE/1.5.2017_19.11.2018#Kurshistorie', 'http://www.boerse-frankfurt.de/anleihen/kurshistorie/BorealisEO-Schuldv_201219-Anleihe-2019-AT0000A0VL70/FSE/1.5.2017_19.11.2018#Kurshistorie', 'http://www.boerse-frankfurt.de/anleihen/kurshistorie/AndritzEO-Anleihe_201219-Anleihe-2019-AT0000A0VLS5/FSE/1.5.2017_19.11.2018#Kurshistorie')), .Names = c("ISIN", "LINK"
                                                                                  ), row.names = c("1", "2", "3", "4"), class = "data.frame")
                                                        
Ich möchte jetzt auf dieser Tabelle basierend eine Liste erstellen die die gewünschte Tabelle extrahiert, insgesamt für knapp 4000 Webseiten. Dafür habe ich eine while Schleife gebaut:

Code: Alles auswählen


#Erstes Element von TS_data definieren:

  remDr <- RSelenium::remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L)
  remDr$open(silent = T)

url<-URL_1[1,2]
remDr$navigate(url)
pageSource <- read_html(remDr$getPageSource()[[1]])
dt <- html_table(html_nodes(pageSource, ".table"), fill = T)
list_of_TS_data<-dt[7]




i=2

while(i < 5) {
  url<-URL_1[i,2]
  remDr$navigate(url)
  pageSource <- read_html(remDr$getPageSource()[[1]])
  dt <- html_table(html_nodes(pageSource, ".table"), fill = T)
  list_of_TS_data[i]<-dt[7]
  print(i)
  i = i+1
}

Leider funktioeniert das ganze nur manchmal und irgendwann gibt er nur noch null aus. Wenn ich das ganze nochmal mache kommen irgendwie wieder andere Sachen raus. Ich kenn mich leider mit Docker nicht gut aus, weiss jemand woran das liegt und kann mir helfen?