Div Element aus lesen, nach dem passenden Name suchen und input value ausgeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Div Element aus lesen, nach dem passenden Name suchen und input value ausgeben

    Hallo zusammen,

    ich logge mich erfolgreich über cUrl auf einer Webseite ein:

    PHP-Quellcode

    1. function HomepageLaden($url, $postdata)
    2. {
    3. $agent = $_SERVER['HTTP_USER_AGENT'];
    4. $ch = curl_init($url);
    5. if ($ch)
    6. {
    7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    8. curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    9. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    10. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    11. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    12. if (isset($postdata))
    13. {
    14. curl_setopt($ch, CURLOPT_POST, 1);
    15. curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    16. }
    17. $tmp = curl_exec ($ch);
    18. curl_close ($ch);
    19. }
    20. return $tmp;
    21. }
    22. $_url = "WEBSEITE";
    23. $_buffer = HomepageLaden($_url, "PARAMETER");
    24. echo $_buffer;
    Alles anzeigen


    Jetzt ist es so, dass mir der Inhalt der Webseite angezeigt wird.

    Ich brauche aber die Realisierung ein "value" aus einem Inputfeld innerhalb eines Divs zu extrahieren.

    Das Div-Element:

    HTML-Quellcode

    1. <div class="folderInfo">
    2. <p class="folderName"><img src="BILD" class="providerIcon" height="16" width="16" alt="BILD" /><a href="URL" target="_blank">EIN NAME MIT SONDERZEICHEN</a><span>(<a href="URL" target="_blank">so</a> - Code: 2k8wfnnhdmhgr - 8.61 GB)</span>
    3. </p>
    4. <p class="folderDate">27.04.2015<br />Mon, 02:33</p>
    5. <p class="folderStatus">
    6. 45<br />45
    7. </p>
    8. <p class="folderClicks">3</p>
    9. <p class="folderOptions">
    10. <input type="checkbox" name="chkFolder[]" value="5783608" class="chkFolder vtext-middle" />
    11. <a href="/manage/?del=2k8wfnnhdmhgr" onclick="javascript:return confirm('Wollen Sie diesen Ordner mit allen Links endgültig löschen ?');"><img src="/template/images/delete.gif" width="13" height="14" class="vtext-middle" alt="Löschen" /></a>
    12. <a href="/manage/?op=edit&fc=2k8wfnnhdmhgr"><img src="/template/images/edit.gif" width="13" height="14" class="vtext-middle" alt="Links Editieren" /></a>
    13. </p>
    14. </div>
    Alles anzeigen

    Hier in diesem DIV-Element, welches ein Input beinhaltet:

    HTML-Quellcode

    1. <input type="checkbox" name="chkFolder[]" value="5783608" class="chkFolder vtext-middle" />

    Der Inhalt von Value, in dem Fall: "5783608" soll extrahiert werden.

    Anhand des <p- Element und dessen Name, soll das richtige Div-Element gefunden und das Value extrahiert werden.

    HTML-Quellcode

    1. <p class="folderName"><img src="BILD" class="providerIcon" height="16" width="16" alt="BILD" /><a href="URL" target="_blank">EIN NAME MIT SONDERZEICHEN</a><span>(<a href="URL" target="_blank">so</a> - Code: 2k8wfnnhdmhgr - 8.61 GB)</span>
    2. </p>

    Fall Beispiel:

    <p class="folderName"><img src="BILD" class="providerIcon" height="16" width="16" alt="BILD" /><a href="URL" target="_blank">EIN NAME MIT SONDERZEICHEN</a><span>(<a href="URL" target="_blank">so</a> - Code: 2k8wfnnhdmhgr - 8.61 GB)</span></p>

    Anhand des Titels, hier grün dargestellt, soll im Div-Element das input-feld gefunden werden und das value extrahiert.

    Hat da jemand eine Lösung parat?

    LG

  • $_buffer enthält das gesamte HTML der Webseite. Wenn du die per echo ausgibst, erzeugst du logischerweise valides HTML, welches der Browser auch rendert. Wenn du HTML ausgeben willst, musst du entweder auf selbst einn <code>-Block drumrum setzen oder die spitzen Klammern ersetzen.
    Zurück zum Thema: da, wie gesagt, das HTML vorhanden ist, kannst du jetzt beispielsweise mit einer Regex-Funktion nach deinen Werten suchen.
    Ein Quick&Dirty-Ausdruck, der für dein Beispiel funktionieren würde: <p.*<a.*>(.*)<

    Ich möchte aber dazu sagen, dass es da zum einen schönere Möglichkeiten gibt (Google ist dein Freund), zum anderen solltest du möglicherweise schauen, ob es nicht eine XML-Datei, eine API oder Ähnliches gibt, damit das schöner umgesetzt werden kann. Denn besonders Regex-Ausdrücke können sehr rechenintensiv werden, wenn die Datenmenge entsprechend groß ist.
    Eventuell wären spezielle DOM-Parser noch eine Idee, da dürfte das Ganze deutlich schneller von Statten gehn.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von freeek ()

  • Danke für deine Antwort,

    $_buffer enhält tatsächlich den HTML-Code, allerdings wird dieser direkt angezeigt. Das cUrl wird dazu verwendet um sich auf einer Webseite direkt einzuloggen.
    Ich gebe nun den HTML mit echo htmlentities($_buffer); aus.

    Jetzt ist es so, dass jeder Div-Block seperat durchsucht werden muss, anhand des Titels.
    <div class="folderInfo"> [...] <p class="folderName"><img src="BILD" class="providerIcon" height="16" width="16" alt="BILD" /><a href="URL" target="_blank">[b]EIN NAME MIT SONDERZEICHEN[/b]</a><span>(<a href="URL" target="_blank">so</a> - Code: 2k8wfnnhdmhgr - 8.61 GB)</span></p> [..] <input type="checkbox" name="chkFolder[]" value="5783608" class="chkFolder vtext-middle" /></div>

    Quasi:
    Wenn: EIN NAME MIT SONDERZEICHEN > gefunden, dann innerhalb dieses Divs das Input inkl. value finden und den Inhalt von Value extrahieren.

    Ich probiere schon seid Tagen was vernünftiges zu basteln.

  • Das scheint wirklich zu funktionieren, aber wie mache ich das, dass er nur das value aus dem bestimmten Div extrahiert?

    So sehen die DIVS aus, das sind jetzt nur zwei

    HTML-Quellcode

    1. <div class="folderInfo">
    2. <p class="folderName">
    3. <img src="/template/images/icons/provider/so.gif" class="providerIcon" height="16" width="16" alt="share-online.biz" />
    4. <a href="/_2k8wfnnhdmhgr" target="_blank">G | PORTAL 2 FE - SHARE-ONLINE</a>
    5. <span>(
    6. <a href="http://share-online.biz" target="_blank">so</a> - Code: 2k8wfnnhdmhgr - 8.61 GB)
    7. </span>
    8. </p>
    9. <p class="folderDate">27.04.2015
    10. <br />Mon, 02:33
    11. </p>
    12. <p class="folderStatus">
    13. 45
    14. <br />45
    15. </p>
    16. <p class="folderClicks">3</p>
    17. <p class="folderOptions">
    18. <input type="checkbox" name="chkFolder[]" value="5783608" class="chkFolder vtext-middle" /> &nbsp;
    19. <a href="/manage/?del=2k8wfnnhdmhgr" onclick="javascript:return confirm('Wollen Sie diesen Ordner mit allen Links endgültig löschen ?');">
    20. <img src="/template/images/delete.gif" width="13" height="14" class="vtext-middle" alt="Löschen" />
    21. </a> &nbsp;
    22. <a href="/manage/?op=edit&fc=2k8wfnnhdmhgr">
    23. <img src="/template/images/edit.gif" width="13" height="14" class="vtext-middle" alt="Links Editieren" />
    24. </a>
    25. </p>
    26. </div>
    27. <div class="folderInfo">
    28. <p class="folderName">
    29. <img src="/template/images/icons/provider/so.gif" class="providerIcon" height="16" width="16" alt="share-online.biz" />
    30. <a href="/_8dlzenn4xo7" target="_blank">G | BLUR FE - SHARE-ONLINE</a>
    31. <span>(
    32. <a href="http://share-online.biz" target="_blank">so</a> - Code: 8dlzenn4xo7 - 5.05 GB)
    33. </span>
    34. </p>
    35. <p class="folderDate">26.04.2015
    36. <br />Sun, 14:48
    37. </p>
    38. <p class="folderStatus">
    39. 26
    40. <br />26
    41. </p>
    42. <p class="folderClicks">13</p>
    43. <p class="folderOptions">
    44. <input type="checkbox" name="chkFolder[]" value="5782417" class="chkFolder vtext-middle" /> &nbsp;
    45. <a href="/manage/?del=8dlzenn4xo7" onclick="javascript:return confirm('Wollen Sie diesen Ordner mit allen Links endgültig löschen ?');">
    46. <img src="/template/images/delete.gif" width="13" height="14" class="vtext-middle" alt="Löschen" />
    47. </a> &nbsp;
    48. <a href="/manage/?op=edit&fc=8dlzenn4xo7">
    49. <img src="/template/images/edit.gif" width="13" height="14" class="vtext-middle" alt="Links Editieren" />
    50. </a>
    51. </p>
    52. </div>
    Alles anzeigen