1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

webseite auslesen

  • hucskfjs
  • 17. August 2009 um 14:39
  • Unerledigt
  • hucskfjs
    8
    hucskfjs
    Mitglied
    Punkte
    575
    Beiträge
    80
    • 17. August 2009 um 14:39
    • #1

    ich würde gerne eine webseite mit php auf text zwischen zwei bestimmten tags auslesen. habe bereits eine function die mir den gesamten quelltext in einen string einliest - readsite(url) - habe probiert dann mit explode die tags zu trennen, habe aber mit den arrays immer nur fehlermeldungen erhalten! kann mir jemand vielleicht verraten wie das gscheit funktioniert?

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 17. August 2009 um 17:53
    • #2

    Nicht alle HTML-Tags müssen geschlossen werden, zB img oder option.
    Ansonsten benutz doch das hier:

    diebstahl.php

    PHP
    <?php
    function diebstahl($url,$tag) {
    	$content = file_get_contents($url);
    	$reg = "/<$tag(.*)>(.+)<\/$tag>/i";
    	preg_match_all($reg,$content,$matches);
    	return preg_replace($reg,"\\2",$matches[0]);
    }
    
    
    echo "<pre>";
    print_r(diebstahl("https://informatik-forum.at/showthread.php?p=600426","a"));
    echo "</pre>";
    ?>
    Alles anzeigen
  • cherrybonbon
    4
    cherrybonbon
    Mitglied
    Reaktionen
    2
    Punkte
    147
    Beiträge
    26
    • 18. August 2009 um 05:59
    • #3

    hi,

    du kannst die seite auch mit der DOM Extension von php (bei php5 standardmäßig dabei) einlesen und per XSLT daten herausfiltern und ein neues XML-Dokument erstellen - vorrausgesetzt die einzulesende seite ist ein valides XML Dokument. das ganze ist zwar etwas mehr aufwand, dafür hast du mit XSL ein sehr mächtiges werkzeug mit dem du die ganze seite in ihre einzelteile zerlegen kannst.

    dazu musst du vortäuschen ein browser zu sein:

    PHP
    ini_set("user_agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");

    dann holst du dir das XML (also die HTML-seite):

    PHP
    $xmlDom = new DOMDocument;
    $xmlDom->load("http://valide.xml.seite.at");

    jetzt erstellen wir einen filter mit XSL:

    PHP
    $xsl = '<?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/html/body/erstesTag/zweitesTag">
    
    
    <!-- zb erzeugen wir eine neue html-seite mit dem "gecrawlten" content: -->
    <html>
    <body>
    <xsl:value-of select="@bestimmtesTagWelchesImZweitenTagEnthaltenIst" />
    </body>
    </html>
    
    
    </xsl:template>
    </xsl:stylesheet>';
    $xslDom = new DOMDocument;
    $xslDom->loadXML($xsl);
    Alles anzeigen

    danach müssen wir noch den filter anwenden:

    PHP
    $proc = new XSLTProcessor;
    $proc->importStylesheet($xslDom);
    $result = $proc->transformToXML($xmlDom);
    echo $result;

    eine simplere lösung wäre die seite per SimpleXML zu laden:

    PHP
    include("Var_Dump.php");
    $bla = simplexml_load_file("http://valide.xml.seite.at");
    Var_Dump::display($bla);

    http://www.bash.org/?104052
    <NES> I download something from Napster
    <NES> And the same guy I downloaded it from starts downloading it from me when I´m done
    <NES> I message him and say "What are you doing? I just got that from you"
    <NES> "getting my song back fucker"


  • hucskfjs
    8
    hucskfjs
    Mitglied
    Punkte
    575
    Beiträge
    80
    • 18. August 2009 um 09:13
    • #4
    Zitat von spinball

    Nicht alle HTML-Tags müssen geschlossen werden, zB img oder option.
    Ansonsten benutz doch das hier:

    diebstahl.php

    PHP
    <?php
    function diebstahl($url,$tag) {
        $content = file_get_contents($url);
        $reg = "/<$tag(.*)>(.+)<\/$tag>/i";
        preg_match_all($reg,$content,$matches);
        return preg_replace($reg,"\\2",$matches[0]);
    }
    
    
    echo "<pre>";
    print_r(diebstahl("https://informatik-forum.at/showthread.php?p=600426","a"));
    echo "</pre>";
    ?>
    Alles anzeigen


    danke funktioniert super. wo find ich info über diese zeichen /< (.*) etc.?

    Zitat von cherrybonbon

    vorrausgesetzt die einzulesende seite ist ein valides XML Dokument

    Nein, es handelt sich um eine html seite mit links zu audio bzw video dateien

    Einmal editiert, zuletzt von hucskfjs (18. August 2009 um 09:35)

  • hucskfjs
    8
    hucskfjs
    Mitglied
    Punkte
    575
    Beiträge
    80
    • 18. August 2009 um 11:00
    • #5

    (deleted)

    Einmal editiert, zuletzt von hucskfjs (18. August 2009 um 14:33)

  • Paulchen
    1
    Paulchen
    Gast
    • 18. August 2009 um 11:09
    • #6
    Zitat von hucskfjs

    danke funktioniert super. wo find ich info über diese zeichen /< (.*) etc.?

    Auf php.net findest du zu allen in PHP integrierten Funktionen recht gute Dokumentation.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung