Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zugriff auf DOM, inkl. CSS

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zugriff auf DOM, inkl. CSS

    Hallo php-Forum, ich bin frisch angemeldet und hoffe auf Unterstützung.

    Ich möchte für eine Plattform die Möglichkeit implementieren, Fotos über Twitter einzureichen. Die Software muss also in einem Stream von Twitter-Nachrichten die Links auswerten und die entsprechenden Bilder finden.

    Das Problem: Es gibt eine Vielzahl verschiedener Dienste, die Bilder hosten und dann den Link darauf auf Twitter posten. Das verlinkte Bild wird selbstverständlich nicht direkt angezeigt, sondern eingebunden in eine Website, mit weiteren Thumbnails, Werbung, etc. (Beispiel Another for @shawnelledge on Twitpic )

    Die Aufgabe ist also: Dem Link folgen und herausfinden, hinter welchem img-Tag das wichtigste Bild steckt. Man könnte die Struktur der Seiten manuell analysieren, das ist aber wegen der vielen verschiedenen Dienste eher auswegslos.

    Mein Ansatz ist bisher: Das eigentliche Bild wird sehr wahrscheinlich die größte Grafik auf der Seite sein. Also muss ich auf der Seite (wie dem oben verlinkten Beispiel) das img-Tag finden, das am größten angezeigt wird.

    Es gibt PHP-Skripte für Zugriff auf das DOM einer Seite (PHP Simple HTML DOM Parser), sowie für die CSS-Deklarationen (CSS parser - PHP Classes) Diese beiden so zu kombinieren, dass auch verschachtelte Elemente etc. zuverlässig erkannt werden, sodass für jedes img-Tag die Größe ausgelesen werden kann, wird aber kompliziert.

    Nach der langen Vorred also meine Fragen:
    - kennt jemand eine Bibliothek, die HTML und CSS parsen kann und dann für jedes Element Zugriff auf die Formatierungen bietet?
    - Oder gibt es vielleicht noch eine bessere Strategie, um mein Ziel zu erreichen, also das Bild auf so einer Seite zu erkennen?

  • #2
    Zitat von joux Beitrag anzeigen
    - kennt jemand eine Bibliothek, die HTML und CSS parsen kann und dann für jedes Element Zugriff auf die Formatierungen bietet?
    - Oder gibt es vielleicht noch eine bessere Strategie, um mein Ziel zu erreichen, also das Bild auf so einer Seite zu erkennen?
    Also so eine Klasse gibt es bestimmt, ich kenne nur keine (habe allerdings auch nicht danach gesucht)

    Mein Vorgehen wäre, durch alle IMG-SRC zu iterrieren und jeweils einen Head-Request abzusetzen, um die physikalische Bildgröße zu ermitteln.
    Vermutlich ist das bytemäßig größte Bild auch das Bild mit den größten Dimensionen (width/height).
    Im Zweifel kann unter den Favoriten noch mittels Remote-getimagesize() ausgesiebt werden.

    War jetzt nur so eine erste naive Idee von mir. Ein Emulator für eine Browser-Engine wäre natürlich perfekt.

    Kommentar


    • #3
      Für DOM gäbe es schon eine interne Implementierung mit XPath- und HTML-Unterstützung.

      Kommentar


      • #4
        @fritz_07 Es handelt sich um eine fremde Website mit externen CSS-Files. Das heißt, du musst in das DOM alle Resourcen erstmal einlesen - meintest du das, wenn ja, wie geht das?

        Kommentar


        • #5
          @yab:
          Die Idee mit der Bilddateigröße ist eine gute Alternative, danke. Da es sich fast immer um Fotos handeln dürfte, wird es wohl auch kaum passieren, dass da irgendwo mal ein Bild dabei ist, das plötzlich super komprimiert werden kann und damit die Regel sprengt...
          getimagesize() hatte ich auch noch gar nicht im Auge, schätze mal, dass das auch die rechen- und bandbreitenintensivste Variante ist.

          @fritz_07:
          Ja, die ganzen SimpleXML-Funktionen helfen beim HTML parsen. Aber siehst du eine Möglichkeit, darüber auch auf die Attribute aus dem CSS-Stylesheet zuzugreifen?

          Kommentar


          • #6
            Über CSS kannst DU das imho vergessen. Ein Bild in Vollgrösse muss nicht zwingend CSS Angaben gesetzt haben, oder?
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Themenmoderation:
              [→] Verschoben von Off-Topic Diskussionen
              Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

              Kommentar


              • #8
                Zitat von nikosch Beitrag anzeigen
                Über CSS kannst DU das imho vergessen. Ein Bild in Vollgrösse muss nicht zwingend CSS Angaben gesetzt haben, oder?
                Da hast du recht, ich habe auch schon Dienste gesehen, die es komplett ohne Größenangabe einbinden. Der Vorschlag von yab, einfach nach Dateigröße zu gehen, ist wohl demnach tatsächlich der beste. Und wahrscheinlich auch recht sparsam, ein paar Header abzurufen ist ja kein Akt.

                Also, danke für die Aufmerksamkeit.

                Kommentar

                Lädt...
                X