| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

22-03-2011, 11:15
|
|
Seppo2
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 8
|
|
CURL / Daten von Website mit tabellen auslesen
Hallo
ich kenne mich mit dem CURL nicht besonders aus und verstehe manche Sachen nicht.
Ich habe folgende Website wo ich die Daten in eine Array auslesen möchte
Crushed Ambitions Corporation details - Crushed Ambitions [C-A]
folgende Tabelleninhalte der Seite werden benötigt
---------- Ship type / Victim / System / Time
1.Datensatz / Hawk / DillonEllett / Olettiers / 2011-03-19
2.Datensatz / Drake / DillonEllett / Olettiers / 2011-03-17
mir würde es schon reichen, wenn ich nur die erste Seite der Webseite so auslesen könnte. Würde mir dann eine Schleife bauen, um alle durchzugehen.
Wäre echt nett wenn mir hier jemand helfen könnte.
Gruß Seppo
|

22-03-2011, 11:28
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
CURL brauchst du zum Abrufen der Seite, zum Extrahieren der Inhalte dagegen brauchst du DOM.
Die Art der gewünschten Hilfe solltest du näher erläutern und es sollte auch daraus hervorgehen, was du selbst schon geschafft hast oder zu tun in der Lage bist. Außerdem wäre es tierisch sinnvoll, diese Sachen, die du nicht verstehst, auch zu benennen, sonst kann ich dir nur raten:
Lies dir manche Kapitel im Handbuch durch und mach manche Tutorials!
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

22-03-2011, 19:23
|
|
Seppo2
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 8
|
|
versuche das gerade nicht über curl sondern über preg_match_allzu lösen
leider bekomme ich keine ausgabe
PHP-Code:
<?php $url = "http://www.crushedambitions.org/killboard/?a=corp_detail&crp_id=8275&view=losses&page=1/"; $content = file_get_contents($url);
preg_match_all ('/<tr class="kb-table-row-odd">\s{0,1}(.*?)<\/tr>/', $content, $hit);
print_r($hit);
?>
Sollte er jetzt nicht <tr> </tr> mit der Klasse kb-table-row-odd komplett ausgeben ?
finde die Nomenkaltur von preg_match_all verwirrend :-)
Vielleicht weiß jemand rat
Geändert von AmicaNoctis (23-03-2011 um 12:38 Uhr)
Grund: Code-Tags gesetzt
|

22-03-2011, 19:38
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
HTML mit regulären Ausdrücken zu zerlegen, ist mühsam, fehleranfällig und bei Änderungen an der Struktur der Seite schreibst du alles nochmal neu. Aber wenn es unbedingt sein muss, sieh dir die Modifikatoren an, insbesondere "s".
Wenn du dich belehren lassen willst, mach es mit DOM und XPath.
Übrigens gibt es hier Code-Tags, die für Quellcode benutzt werden sollen (siehe Signatur). Wäre nett, wenn du den Beitrag dahingehend ändern könntest.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

23-03-2011, 12:24
|
|
Seppo2
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 8
|
|
Problem bei den ganzen DOM Beispielen im Netz ist, dass diese fast nie funktionieren und so ist es schwer dazu Beispiele rauszusuchen.
Wäre echt nett wenn mir jemand bei meinem Vorhaben helfen könnte.
PS : wie markiere ich meinen Quellcode?
|

23-03-2011, 12:47
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Funktionierendes Beispiel
Die Code-Tags hab ich jetzt selbst hinzugefügt.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

24-03-2011, 23:01
|
|
Seppo2
Registrierter Benutzer
|
|
Registriert seit: Aug 2007
Beiträge: 8
|
|
bekomme zwar eine Ausgabe finde leider nicht die korrekte Klasse für DIV
Code:
<?php
$url = "http://www.crushedambitions.org/killboard/?a=corp_detail&crp_id=8275&view=losses&page=1/";
$content = file_get_contents($url);
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadHTML($content);
$params = $dom->getElementsByTagName('div'); // Find Sections
$k=0;
foreach ($params as $param) //go to each section 1 by 1
{
if($param->getAttribute('class')=='killlist')
{
$params2 = $dom->getElementsByTagName('tr'); // Find Sections
$j=0;
foreach ($params2 as $param2) //go to each section 1 by 1
{
if($param2->getAttribute('class')=='kb-table-row-odd')
{
echo $param2->nodeValue ;
}
$j++;
}
}
$k++;
}
?>
|

24-03-2011, 23:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
In der Zeile mit "find sections" darfst du nicht vom Dokument ($dom) ausgehen, um die Tabellenzeilen zu finden, sondern musst die vom aktuellen Element ($param) aus suchen.
Edit:
Außerdem wird dir der nodeValue von $param2 nicht viel bringen, denn der ist bei Elementknoten immer null. Evtl. suchst du nach textContent oder willst weitere Kinder davon haben?
Mal ganz davon abgesehen - wäre das mit XPath nicht 100 mal bequemer?:
PHP-Code:
foreach ($xpath->query("//div[@class='killlist']//tr[@class='kb-table-row-odd']") as $row) { // ... }
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (24-03-2011 um 23:09 Uhr)
|

24-03-2011, 23:09
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Edit: OK, scheinbar hat Amica dich verstanden.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Geändert von wahsaga (24-03-2011 um 23:12 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|