Problem bei verbindung zu HTML

... zu anderer statistischer Software, zu Datenbanken und Programmiersprachen.

Moderatoren: EDi, jogo

Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Problem bei verbindung zu HTML

Beitrag 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...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Problem bei verbindung zu HTML

Beitrag von student »

Würdest Du beschreiben, wie Du das Problem gelöst hast?
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Problem bei verbindung zu HTML

Beitrag 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...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Kramer
Beiträge: 16
Registriert: Fr Nov 02, 2018 12:29 pm

Re: Problem bei verbindung zu HTML

Beitrag 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?
Antworten