Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert "von bis" (innerhalb eines tags) aus einer Textdatei auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wert "von bis" (innerhalb eines tags) aus einer Textdatei auslesen

    Hallo Community ))

    Habe eine Frage an euch.

    Ich will aus einer Textdatei (eine abgespeicherte HTML Seite) bestimmte Werte rausfiltern
    Z.B. $name, $datum, $ort
    Die zu findenden Werte wären z.B. Hubert Konzert, 05.05.2020, Berlin

    Wie könnte ich die Werte aus der Textdatei rausfiltern


    PHP-Code:
        $fp fopen("./data/content.txt","r");

        if(!
    $fp)
            {
                echo 
    "Datei konnte nicht geöffnet werden.";
                exit;
            }
        else{
                while (!
    feof($fp))
                        {
                            
    $name // mit was rauslesen 
                            
    $datum // ...
                            
    $ort //  ...

                           // in MySQL abspeichern
                        
    }          }
        } 
    Die Textdatei content.txt könnte beispielsweise so aussehen
    HTML-Code:
    <span class="name" title="name">Hubert Konzert</span>
    <span class="datum" title="datum">05.05.2020</span>
    <span class="ort" title="ort">Berlin</span>
    <span class="name" title="name">Rene Spiel</span>
    <span class="datum" title="datum">06.06.2021</span>
    <span class="ort" title="ort">Hamburg</span>
    <span class="name" title="name">Björn Festival</span>
    <span class="datum" title="datum">07.07.2022</span>
    <span class="ort" title="ort">München</span>

  • #2
    Wenn das eine HTML-Datei ist, nimm DOMDocument und XPATH.
    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

    Kommentar


    • #3
      Ich habe die HTML Seite als Textdatei abgespeichert // content.txt

      Interessant ist natürlich auch die HTML-Seite direkt auszulesen

      Kommentar


      • #4
        Ja, OK...? Das ist ja DOMDocument erstmal egal, wo das herkommt

        https://www.php.net/manual/de/domdoc...adhtmlfile.php
        [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

        Kommentar


        • #5
          So ich habe es jetzt mit dem DOMDocumet und XPATH versucht

          Bei line 48 gibt er mir Fehlermeldungen aus // $doc->loadHTMLFile($file);

          Warning: DOMDocument::loadHTMLFile(): End tag : expected '>' in ./data/content.txt, line: 115 in D:\xampp\htdocs\Projekt\include\include_vk.php on line 48
          Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : scr in ./data/content.txt, line: 115 in D:\xampp\htdocs\Projekt\include\include_vk.php on line 48

          Ich will das was in diesem DIV drinne ist.
          Im DIV sind aich eingige <h4> und <h3>



          PS: die mit den Werten gefüllte Variabel $out_body wird von einer anderen Seite ausgegeben

          PHP-Code:
          $DOCUMENT_ROOT "./data/"
          if (!
          file_exists($DOCUMENT_ROOT"content.txt"))
              {
                  
          $out_body .= "<br>Datei ist nicht vorhanden. Fehler beim anlegen der Datei";
                  
          //exit;      }

          else{


              
          $file $DOCUMENT_ROOT"content.txt";

              
          $doc = new DOMDocument();
              
          $doc->loadHTMLFile($file);

              
          $xpath = new DOMXpath($doc);

              
          $elements $xpath->query('*/div[@class="container"]');

              if (!
          is_null($elements)) {
                  foreach (
          $elements as $element) {
                    
          $out_body .= "<br/>["$element->nodeName"]";

                    
          $nodes $element->childNodes;

                    foreach (
          $nodes as $node) {
                      
          $out_body .= $node->nodeValue"\n";
                    }
                  }
                }
              } 

          Kommentar


          • #6
            Ich will das was in diesem DIV drinne ist.
            In dem, was du gepostet hast, ist kein <div> drin. Außerdem will DOMDocument gerne einen (syntaktisch richtigen) HTML-String, nicht nur einen HTML-Chunk.

            Kommentar


            • #7
              Meinst du den HTML-Code ganz oben, ja das war nur "beispielsweise" - den hatte ich selber schnell gebastelt

              In meiner eigentlichen Text-Datei gibt es <div class="container">
              Und den (syntaktisch richtigen) HTML-String hätte ich auch leber benutzt, in php.net habe ich aber zum HTML Seiten auslesen diese Form gefunden

              Danke für deinen Beitrag ))
              Morgen teste ich das noch mal

              Kommentar


              • #8
                Der Weg ist auch der richtige, die Warning bedeutet, dass das HTML, welches du auslesen möchtest, nicht valide ist.
                Fehlermeldung steht dort, es steht sogar die Zeile dort. Schau doch mal nach was in dieser Zeile so vorkommt.

                ->loadHTML ist auch so ziemlich die einzige Funktion bei welcher man Warnings unterdrücken darf. Vor allem wenn man keinen Einfluss hat auf das HTML welches man einlesen will.

                https://www.php.net/manual/en/langua...rorcontrol.php

                Kommentar


                • #9
                  So, mit DOCDocument und DOMXpath habe ich jetzt Zugriff auf TAGS

                  z.B. diese Zeilen liefern mir aus einem <a href="link.de" titel="linktitel"> den Titel und den Link - top für meine Zwecke - bis hierhin alles super
                  Code:
                  $titel    = $element->getAttribute('title');
                  $linkmehr = $element->getAttribute('href');

                  Jetzt will ich aber ein <h3>...<h3> und ein <p>...</p> auslesen

                  Wie kann ich den H3-tag auslesen?

                  Und in dem P-Tag sind wahrscheinlich verschiedene Vormate (vermute sowas wie $ort.' | ' $termin )
                  z.B. "Brandenburger Tor in Berlin | 31.01.2019 bis 01.01.2020"
                  das will ich in eine Variabel $ii abspeichern

                  Jedoch wenn ich das mit echo ausgeben will, dann naja wird nichts ausgegeben... Mein Ansatz war:
                  Code:
                   $ii = $element->getElementsByTagName ('p');

                  So nebenbei (wobei ich da wahrscheinlich auch selber rausfinden werde)
                  Wenn ich einen $ii habe, wie am besten den Inhalt nach ' | ' trennen und den letzten Teil abspeichern? Explode, split?

                  Kommentar


                  • #10
                    Das macht kein Sinn was du da tun willst mit

                    Code:
                     
                      $ii = $element->getElementsByTagName ('p');
                    $element ist in deinem Fall der <a> Tag wieso willst du darin die p tags raussuchen?

                    PHP-Code:
                    $elements $xpath->query('*/div[@class="container"]'); 
                    Der Code sucht sich ja alle Divs raus mit der Klasse "container", genau so musst du dann nach den p tags suchen und dann alle p tags analysieren
                    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                    Kommentar


                    • #11
                      Das A-Tag hatte ich gelöst - da habe ich auch meine Sachen (aus href und title) raus die ich haben wollte

                      In der Struktur unterhalb des A-Tag sind auch die H3 ind P Tags
                      // F12, Entwicklerwerkzeuge, Reiter Inspektor

                      Darin soll er mir die Werte innerhalb des H3 und des P Tag ausgeben

                      PHP-Code:
                      $query '//*[@class="line_view event_line float-break"] //a ';
                      $elements $xpath->query($query);


                          if (!
                      is_null($elements)) {

                              foreach (
                      $elements as $element) {

                                  
                      $titel    $element->getAttribute('title');       // Funktioniert
                                  
                      $linkmehr $element->getAttribute('href');        // Funktioniert

                                  
                      $ii       $element->getElementsByTagName ('p');  // hier geht es nicht
                                  
                      $iii      $element->getElementsByTagName ('h3');  // hier geht es nicht 
                      Aus dieser Struktur will ich es haben - https://www.bilder-upload.eu/bild-2d...80647.jpg.html

                      Diese Werte will ich gerne daraus rausziehen
                      $ii = "Session und offene Bühne";
                      $iii = "Cafe Lohengrin | 10.09.2019 bis 10.12.2019"

                      Kommentar


                      • #12
                        Zitat von dustinator Beitrag anzeigen
                        In der Struktur unterhalb des A-Tag sind auch die H3 ind P Tags
                        Das solltest du beheben. Es ergibt keinen Sinn, ganze Abschnitte in einen Link zu packen, vor allem, wenn sie sich nicht konkret auf die verlinkte Ressource beziehen.

                        Kommentar


                        • #13
                          Ich lese es aus einer fremden Webseite raus - die andere Webseite hat ne Art Auflistung gemacht (in der Auflistung ist alles was ich brauche)
                          und wenn man auf eine Auflistung draufklickt kommt man auf eine weiterführende Seite (das brauche ich nicht)

                          Kommentar


                          • #14
                            Warum fragst du den Betreiber nicht einfach nach einer Schnittstelle? Die Erlaubnis zum Auslesen musst du ja schon eingeholt haben.
                            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                            Kommentar


                            • #15
                              Das Programm ist nur Intern zu "Analyszwecken" - ich will diese Praxis erlernen
                              Im gleichen Programm will ich die Anbieter nach einer Schnittstelle bzw API anfragen - auch nur um das zu erlernen

                              ______

                              Späterer Sinn wäre z.B. wenn eine Firma wissen will was sein Konkurrent(en) aktuell in einer Werbeaktion anbietet
                              und der dann selber eine Gegenaktion machen kann ... also im Grunde ein Web-Analyseprogramm der Konkurrenz

                              Für mich ist jetzt erstmal nur wichtig zu verstehen wie ich fremde online gestellte Daten sinnvoll abfragen/analysieren kann

                              Kommentar

                              Lädt...
                              X