Announcement

Collapse
No announcement yet.

HTML Tabellen auslesen und in php/mySQL DB eintragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • HTML Tabellen auslesen und in php/mySQL DB eintragen

    Hallo liebe Leutz!

    ich programmiere gerade an einem Datenbanksystem. Ich will nun folgendes machen...
    Ich möchte folgende Tabelle (http://www.formula2.net/Targa73.htm) auslesen lassen und sie dann in meine Datenbank eintragen lassen. Dachte mir das es mit SAX(Parser) geht. Hat einer von euch einen Vorschlag???Es sollten aber formatierungen usw. stimmen.
    Gibts irgendwo ein tutorial oder bsp sripts????

    Probelm besteht hierbei: Ich möchte die kompletten Fahrer und Rennautos sowie platzierungen usw. in meine DB bekommen....

    Mit was für einer Methode ist es am besten??? Dachte mir SAX Parser aber wie???

    Danke im vorraus!

    N.C.

  • #2
    Hallo Neno,

    ein XML Parser setzt als Quellformat XML voraus und das was auf diesem Link zu sehen ist, hat nicht's mit XML zu tun.

    Was meinst Du mit formatierungen usw???

    lg Dietma

    Comment


    • #3
      naja, diese html-tabelle sieht schon ganz gut aus (ist offenbar generiert worden)! die würde ich herauskopieren und echtes xml draus machen.

      b

      Comment


      • #4
        Es gibt in der Tat SAX Parser für HTML Seiten. Einer den ich im Rahmen
        eines kleinen Programms genutzt habe, um Webseiten zu parsen, ist
        'tagsoup'. Es gibt aber noch einige andere

        Comment


        • #5
          hi!

          danke erstmal...nun mach ichs doch etwas einfacher. Mir liegt nun folgender Text vor:

          ############################################
          54th Targa Florio 1973

          1. Mrxxx
          Mryyy

          2. Mrbbb
          Mraaa

          3. Mrwww
          Mrcccc

          texttexttexttexttexttexttexttexttexttexttexttextte xttexttexttexttexttext
          texttexttexttexttexttexttexttexttexttexttexttextte xttexttexttexttexttext
          texttexttexttexttexttexttexttexttexttexttexttextte xttexttexttexttexttext
          ############################################
          Ich möchte nun diesen Text zeilenweise bzw. zeichenweise auslesen!

          1. 54th Targa Florio soll in meine DB "porsche" geschrieben werden und zwar in die Tabelle "rennen" und dann in spalte "Bezeichnung"

          2. Platzierungen. Die 1, 2, und der 3. Platz soll jeweils mit beiden Fahrenern die gefahren haben pro Team in die DB rein! Also in die DB "porsche" Tabelle "rennresultat" und in Spalte "Platzierungen"

          3. Der Text unten soll auch in die DB "porsche" geschrieben werden und zwar in Tabelle "rennen" und in spalte "Beschreibung" Der Text ist unterschiedlich lang is halt ne beschreibung über das rennen!

          Da ich sowas noch nie gemacht habe bräuchte ich dringend ein tutorial..Kann mir einer da weiterhelfen???soll später alles mal auf die seite www.rennplakate.de

          Danke im vorraus leute

          Comment


          • #6
            http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html
            <br>
            http://www.google.com
            <br>

            Das ist eine so allgemeine Fragestellung, daß man ich eher wie oben verweisen möchte. Oder kauf Dir einfach ein Buch zu JDBC.
            <br>
            Wenn Du konkretere Fragen hast, dann helfe ich Dir gerne weiter.
            <br>
            lg Dietma

            Comment


            • #7
              Ich habe mal folgendes probiert:

              package xml;

              import java.io.ByteArrayInputStream;
              import java.io.ByteArrayOutputStream;
              import java.io.OutputStreamWriter;
              import java.net.URL;

              import javax.xml.parsers.DocumentBuilder;
              import javax.xml.parsers.DocumentBuilderFactory;

              import org.apache.xpath.XPathAPI;
              import org.ccil.cowan.tagsoup.Parser;
              import org.ccil.cowan.tagsoup.XMLWriter;
              import org.w3c.dom.Document;
              import org.w3c.dom.Node;
              import org.xml.sax.InputSource;

              /**
              * Reads data from HTML documents, parses them, transforms them using tagSoup and extracts values using XPath.
              */
              public class ParseHTML {

              /**
              * Returns the text representation of the nodes value, given by the xpath expression.
              *
              * @param node root node, to start searching
              * @param xpath XPath expression to extract nodes
              * @return the values string representation of the extracted node
              */
              public static String getValue(Node node, String xpath) {
              if (node == null || xpath == null || xpath.trim().equals(""))
              return null;

              /* select the node matching the given xpath */
              try {
              Node partNode = XPathAPI.selectSingleNode(node, xpath);
              return partNode.getTextContent().replaceAll("\n", "");
              } catch (Exception e) {
              e.printStackTrace();
              return null;
              }
              }

              /**
              * @param args not used
              */
              public static void main(String[] args) {
              String strBaseURL = "http://www.formula2.net/";
              //String[] fileList = {"Targa06.htm", "Targa19.htm", "Targa20.htm", "Targa21.htm"};
              String[] fileList = {"Targa73.htm"};
              for (int i = 0; i < fileList.length; i++) {
              try {
              /* parse HTML file */
              URL urlFile = new URL(strBaseURL + fileList[0]);
              Parser htmlParser = new Parser();
              ByteArrayOutputStream out = new ByteArrayOutputStream();
              XMLWriter writer = new XMLWriter(new OutputStreamWriter(out));
              writer.setOutputProperty(XMLWriter.METHOD, "xml");
              writer.setOutputProperty(XMLWriter.OMIT_XML_DECLAR ATION, "yes");
              htmlParser.setContentHandler(writer);
              htmlParser.parse(new InputSource(urlFile.openStream()));

              /* create document */
              DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
              DocumentBuilder builder = factory.newDocumentBuilder();
              Document doc = builder.parse(new ByteArrayInputStream(out.toByteArray()));

              String strXPath_RaceName = "/html/body/table[1]/tr[1]/td[2]/p/descendant::b[1]";
              String strXPath_RaceLocation = "/html/body/table[1]/tr[1]/td[2]/p/descendant::b[2]";
              String strXPath_Winner = "/html/body/table[3]/tr[2]/td[5]/font";
              String strXPath_Second = "/html/body/table[3]/tr[3]/td[5]/font";
              String strXPath_Third = "/html/body/table[3]/tr[4]/td[5]/font";
              System.out.println("Racename: " + ParseHTML.getValue(doc, strXPath_RaceName));
              System.out.println("Location: " + ParseHTML.getValue(doc, strXPath_RaceLocation));
              System.out.println("Winner: " + ParseHTML.getValue(doc, strXPath_Winner));
              System.out.println("Second: " + ParseHTML.getValue(doc, strXPath_Second));
              System.out.println("Third: " + ParseHTML.getValue(doc, strXPath_Third));
              System.out.println("--------------------- " + i + " ---------------------");
              } catch (Exception e) {
              e.printStackTrace();
              }
              }
              }
              }

              Die Seiten sind nicht alle gleich und daher funktionieren die XPath Ausdrücke auch nicht überall. Aber ich hoffe, das Konzept wie man an die Werte kommt ist klar

              Comment

              Working...
              X