Isch: Daten aus einer HTML- Seite Extrahieren

Beitrag lesen

Ich möchte gerne mittels PHP preg_match Daten aus einer HTML-Seite extrahieren.

Für den ersten Punkt hab ich noch ne Idee: "/<div class="content">(.*?)</div>/" aber dann ist bei mir gähnende Leere... Hoffe Ihr könnt mir Helfen.

Nur mal als Verdeutlichung, wie umständlich dein Vorhaben mit preg_match ist – das Ganze mit XPath:

html = lxml.html.fromstring(htmlquellcode)

gesamtbildurl = html.xpath('//div[@class="content"]/img[@title="Gesamtbild"]/@src')[0]

tabelle = list()
for spalten in (tr.xpath('td') for tr in html.xpath('//div[@class="content"]/table[1]/tr[position()>1]')):
    '''
    Doppelt verschachtelte Schleife:
    Je tr-Zeile ein Durchlauf (aus tr in html.xpath('//…tr')), wobei in spalten 
    eine Liste mit jeweiligen td-Elementen steckt (aus tr.xpath('td')).
    '''
    tabelle.append({
        "Nummer": spalten[0].text_content(), 
        "Bild": spalten[1].xpath("img/@src")[0], 
        "Typ": spalten[2].text_content(), 
        "Bezeichnung": spalten[3].text_content()
    })

Ergibt in tabelle:

[   {   'Bezeichnung': 'Eins',
        'Bild': 'http://localhost/img/Bild1.gif',
        'Nummer': '1',
        'Typ': 'I'},
    {   'Bezeichnung': 'Zwei',
        'Bild': 'http://localhost/img/Bild2.gif',
        'Nummer': '2',
        'Typ': 'II'},
    {   'Bezeichnung': 'Drei',
        'Bild': 'http://localhost/img/Bild3.gif',
        'Nummer': '3',
        'Typ': 'III'}
]

Das ist jetzt zwar Python und lxml, aber der Punkt ist, dass du nur zweieinhalb recht einfache XPath-Aufrufe brauchst und dazu zwei Schleifen, um die Daten auszulesen. Und mit PHP geht das doch ganz bestimmt genauso einfach :>