0

Text aus Internet Seite kopieren und importieren

Hallo zusammen,

 

gibt es die Möglichkeit, per Button eine Internetseite zu öffnen und sämtlichen angezeigten Text auf dieser Seite automatisch in ein Textfeld in Ninox zu kopieren? Am besten so, dass man das Öffnen der Seite gar nicht mitbekommt... oder braucht man dafür andere Programmiersprachen bzw. etwas wie den Integromat?

 

Vielen Dank im Voraus!

12 Antworten

null
    • Dan_S
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ja tatsaechlich geht das ueber eine http Abfrage ohne dass sich die Seite öffnen muss, allerdings mit Einschränkung

    - Bilder werden nicht geladen

    du kannst natürlich auch die URL festlegen (zB Wiki .. und nur Suchanfragen schicken)

    siehe https://ninox.com/de/manual/ninox-api/http-aufrufe

     

    hier eine einfache Umsetzung:

    der Button enthält fx()

    let response := http("GET", URL);
    if response.error then
    alert(text(response.error))
    else
    Text := html(response.result)
    end

    das Ergebnis schreibst du ein ein formatiertes Textfeld

    Bildschirmfoto 2020-08-12 um 09.31.25

    • Dan_S
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hier eine kleine Verbesserung ..... Suchfeld (mit festgelegter Quelle Wikipedia)

    Bildschirmfoto 2020-08-12 um 09.44.52

    Ergebnis (die Bildverweise muessten manuell bereinigt werden)

    Bildschirmfoto 2020-08-12 um 09.45.06

    • Kalberg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Das ist schon ziemlich genial. Allerdings klappt es bei meiner Situation irgendwie nicht.

    Ich habe folgende URL, wo das Suchfeld ein bisschen weiter unten ist. Dort gebe ich einen Ort ein und erhalte dann Erdbebeninfos zu diesem Ort.

    Man landet bei dem Beispiel Leipzig, dann auf der Seite: http://www-app1.gfz-potsdam.de/pbrisk/index_ug_cms.php?ortsname=Leipzig&SuchenButton=Suchen#abfrage

    Die Infos auf dieser Seite hätte ich gerne in dem formatierten Textfeld.

    In der URL ändert sich also immer nur der Ortsname "...=Leipzig&Suchen..."

    Ich habe also ein Textfeld "Ort" erstellt, einen Feld "Text (formatiert) und den Button mit folgendem Code:

     

    let URL := "http://www-app1.gfz-potsdam.de/pbrisk/index_ug_cms.php?ortsname=" + Ort + "&SuchenButton=Suchen#abfrage";
    let response := http("GET", URL);
    if response.error then
    alert(text(response.error))
    else
    'Text (formatiert)' := html(response.result)
    end

     

    es erscheint leider der error. Weißt du, woran es liegt und wie es funktioniert? Danke dir.

    • Kalberg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Edit: *Ich habe folgende URL: https://www.gfz-potsdam.de/din4149_erdbebenzonenabfrage/

    Da ist das Suchfeld weiter unten.

    • Kalberg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Obwohl auch ein Error erscheint, wenn ich deine Variante 1 zu 1 nachbaue... ganz komisch 

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi,

     

    setz den Ort mal in urlEncode() - also

     

    let URL := "http://www-app1.gfz-potsdam.de/pbrisk/index_ug_cms.php?ortsname=" + urlEncode(Ort) + "&SuchenButton=Suchen#abfrage";
    let response := http("GET", URL);
    if response.error then
    alert(text(response.error))
    else
    'Text (formatiert)' := html(response.result)
    end

     

    lg, Torsten

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ... funktioniert so bei mir einwandfrei:

     

    Bildschirmfoto 2020-08-12 um 16.20.05

    • Kalberg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Es funktionierte die ganze Zeit. Ich habe es aus dem Browser versucht und das funktioniert nicht. Man muss es mit der App machen. Vielen Dank!

    Wenn mich aus dem Ergebnis nun aber nur die "Erdbebenzone" und die "Untergrundklasse" interessieren und nicht der gesamte Text, die direkt in Felder "Erdbebenzone" und "Untergrundklasse" rein kopiert werden sollen... geht das auch? 

     

    ...und für Bilder gibt es gar keine Chance?

    • Dan_S
    • vor 3 Jahren
    • Gemeldet - anzeigen

    die normale URL lässt keine GET Abfrage zu, aber die APP1 ... wenns läuft, ist das ein guter Schritt

     

    wenn du selektieren möchtes, dann kommst du nicht drum rum mit der API zu arbeiten und dich einzulesen und zu pobieren

     

    hier gibts ne Dokumentation, hatte leider noch keine Zeit mich einzulesen

    https://www.gfz-potsdam.de/gts2/

     

    lade dir Postman, damit kannst du api Abfragen testen, bevor du den Fehler bei dir im Code suchst

    wie man API abgragen programmiert ist in der Ninox Doku siehe meinen ersten Link. 

     

    Du bekommst dann ein JSON Objekt als Resultat, die kannst du dann nach den jeweilgen Inhalten deine Felder beliebig füllen.... 

    Ob das mit Bildern geht, das habe ich noch nicht versuch...

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Wenn es Dir nur um Erdbebenzone und Untergrundklasse geht, kannst Du die Felder über Reguläre Ausdrücke (regular expressions) befüllen. Anhand von extractx(Text,"regEx","flag","gruppe") kannst Du in einem Text bestimte Strukturen suchen und extrahieren (oder mit replacex auch ersetzen). Reguläre Ausdrücke sind ein sehr komplexes Thema und sehr kryptisch - aber in diesem Fall nicht allzu kompliziert... du weißt ja wonach Du suchen willst und die Struktur ist hoffentlich immer die gleiche... also:

    Erdbebenzone := extractx(text('Text (formatiert)'),"(Erdbebenzone\s)(\d)","g","$2")

    Untergrundklasse := extractx(text('Text (formatiert)'),"(Untergrundklasse\s)(\w)(\.)","g","$2")

    Zur Erklärung:

    Du suchst mit regulären Ausdrücken nach dem Vorkommen des Wortes "Erdbebenzone". Dieses kommt im Text aber 3 mal vor, also Grenzen wir weiter ein: gefolgt von einem Leerzeichen \s wiederum gefolgt von einer beliebigen einstelligen Zahl \d - falls es auch mehrstellig sein kann müsste  es \d+ sein (das plus bedeutet "eins oder mehrere"). Genial ist aber das einteilen in Gruppen anhand von Klammern - und damit auch für uns super nutzbar.

    (Erdbebenzone\s) Gruppe 1

    (\d) oder (\d+) Gruppe 2

    und genau die Gruppe 2 holen wir uns mit der option "$2"

    Sehr komplexes Thema, aber damit hab ich mir in der Ninox schon viel arbeit erspart.

    Übrigens, schöne Spielwiese zum ausprobieren von Regulären Ausdrücken: https://regex101.com/ 

    Gruß

    Tobias

    • Sean
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Damit es im Browser funktioniert, müssen Sie es möglicherweise verwenden "do as server" https://ninox.com/de/manual/ninox-api/http-aufrufe 

     

    Erwarten Sie in Bezug auf extractx nicht, dass das Flag "g" funktioniert https://ninox.com/en/forum/ideas-and-suggestions-5abb9f4f45eda7ea1e75ed02/please-fix-the-extract-function-so-flags-will-work-5e25440845dcf70528699a3e?post=5f35371d539bd77f590ca617&page=1 

     

    Grüße

    Sean

    • Kalberg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Dank schon einmal an alle!

     

    Mit einer API zu arbeiten, wäre wahrscheinlich die sauberste Lösung aber es funktioniert jetzt mit der Lösung von Tobias, da mich aktuell nur Erdbebenzone und Untergrundklasse interessieren.

     

    Ein unschönes Problem gibt es noch. Gebe ich zuvor "Berlin" ein, dann erscheinen mehrere Orte für Berlin mit verschiedenen Zonen, sodass man im Browser dann den gewünschten Ort von Berlin anklickt und daraufhin wieder den normalen Text mit Erdbebenzone und Untergrundklasse erhält.

     

    Mir würde es schon reichen, dass wenn ich auf "Erdbebenzone bestimmen" klicke, gecheckt wird ob im erstellten Text "mehrere" wegen "für Berlin wurden mehrere Zonen gefunden..." auftaucht und falls ja ein Popup-Fenster erscheint mit "Für den eingegebenen Ort gibt es mehrere Zonen, bitte klicke auf "Fortfahren", um Online die gewünschte Zone auszuwählen oder "Abbrechen" um den Vorgang abzubrechen. Ich weiß schon, dass es mit if und contains und einer dialog box gemacht wird aber wie funktioniert das, dass es direkt gecheckt wird, wenn ich "Erdbebenzone bestimme" klicke?

     

    Nur in Ninox, ist das wohl ohne API nicht zu lösen, denke ich. 

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 12Antworten
  • 1917Ansichten