2017-01-11 5 views
-1

Ich habe eine HTML-Datei, die viele <tr> Tags wieWie erstellt man eine Datenbank aus einer HTML-Datei?

 <tr> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       aaa 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       bbb         
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       ccc 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       ddd 
      </td> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       eee 
      </td> 
     </tr> 
     <tr> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       xxx 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       vvv         
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       bbb 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       nnn 
      </td> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
       hhh 
      </td> 
     </tr> 

Ich möchte dafür eine Datenbank aus diesen Werten (aaa, bbb, ccc .....) enthält.
Wie kann ich diese Tags trennen und richtige Werte auswählen?
Ich möchte PHP für diese Auswahl verwenden.

+0

können Sie den HTML-Code analysieren und dann Abfragen basierend auf den Werten generieren, die Sie analysiert haben. – user1336827

+0

Führen Sie JavaScript in der Konsole Ihres Browsers aus, um die Tabelle Zeile für Zeile zu durchlaufen und die Zellen zu erfassen. Toss die Ergebnisse in ein Array und console.log dieses Array. Kopieren Sie das Array und führen Sie es im Backend aus, wo Sie es in die Datenbank einfügen können. – Ultimater

+0

http://stackoverflow.com/questions/1403087/how-can-i-convert-an-html-table-to-csv Dies ermöglicht es Ihnen, in CSV zu konvertieren, dann ist es einfach, in eine Datenbank zu importieren oder einen PHP zu schreiben Datei zum Zugriff auf die CSV –

Antwort

0

Zuerst habe ich die HTML-Seite in eine xls-Datei umgewandelt und dann mit libreoffice calc in eine CSV-Datei konvertiert.

Dann habe ich die CSV in eine MySQL-Tabelle importiert. aber dieser Tisch war nicht so gut wie ich brauchte. Also habe ich einen PHP-Code benutzt und die Datenbank gelesen und auf eine neue Tabelle geschrieben. Jetzt habe ich eine saubere und nützliche DB aus der HTML-Datei.

+0

sollten Sie zumindest Ihren PHP-Code teilen, wenn Sie diese Antwort als akzeptierte Antwort markieren. Ich sehe nicht, wie jemand tatsächlich überprüfen könnte, ob deine Antwort richtig oder falsch mit dieser Aussage ist. – Jeff

0

Wenn die Datei korrektes XML ist, können Sie XPath verwenden, um durch die Elemente zu iterieren.

$content = <<<EOT 
<html> 
    <tr> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    aaa 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    bbb 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    ccc 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    ddd 
      </td> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    eee 
      </td> 
     </tr> 
     <tr> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    xxx 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    vvv 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    bbb 
      </td> 
      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    nnn 
      </td> 

      <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
    hhh 
      </td> 
     </tr> 
</html> 
EOT; 
$xml = new SimpleXmlElement($content); 
$result = $xml->xpath("//td"); 
$values = array(); 
foreach($result as $node) { 
    $values[] = trim((string)$node); 
} 
var_dump($values); 

Nach Extrahieren der Daten, können Sie mysqli_connect verwenden, um die Datenbank zu verbinden und mysqli_query eine Abfrage der Daten in eine Tabelle einzufügen.

+0

Leider ist es kein XML. Wenn es irgendeine Art von XML-Parser wäre, könnte mir helfen. Ich habe die Quelle der HTML-Datei in meine Frage kopiert und es ist eine normale HTML-Seite. – mrmrn

+0

@mrrnn, haben Sie den vorgeschlagenen Code vor dem Kommentieren ausprobiert? –

+0

Die meisten (X) HTML-Dateien können als XML analysiert werden. Der Code funktioniert perfekt mit Ihrer Probe. – Jeff

0

Dieser Code nimmt die HTML in Ihrer Frage ist genau diejenige, die Sie aus den Daten extrahiert werden sollen, so dass ich die Linie inden und Zeilenumbrüche zum Extrahieren der Daten wie folgt:

$content = <<<EOT 
    <html> 
     <tr> 

       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     aaa 
       </td> 
       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     bbb 
       </td> 
       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     ccc 
       </td> 
       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     ddd 
       </td> 

       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     eee 
       </td> 
      </tr> 
      <tr> 

       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     xxx 
       </td> 
       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     vvv 
       </td> 
       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     bbb 
       </td> 
       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     nnn 
       </td> 

       <td class="parsehlisttable_alteritemstyle" style="text-align: right;"> 
     hhh 
       </td> 
      </tr> 
    </html> 
    EOT; 


$lines = explode("\n", $content); 
foreach($lines as $line) 
{ 
    if(trim($line) == trim(strip_tags($line)) && $line != '') 
    { 
    $line = trim($line); 
    $mydata[] = $line; 
    } 
} 

foreach($mydata as $data) 
{ 
    mysql_query("INSERT INTO .... VALUES (NULL, '" . $data . "') "); 
} 

Viel Glück

Verwandte Themen