Html Parsen / Values von Hidden Fields auslesen

  • Themenstarter Themenstarter Michi2007
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Michi2007

Gast
Hi

ich versuch mit grad bisschen an Java und hab so eine Htmldatei als Quelle:


Code:
...
<input type="hidden" name="abc" value="xyz">
...

Nun möchte ich das xyz auslesen, weiss aber nicht genau, wie ich das anstellen soll.

Ich benutze den htmlparser, aber komm damit nicht klar, Anfänger halt 🙂

Bin im Moment an der Stelle:

Code:
NodeList list = parser.parse (null);


Jetzt komm ich allerdings nichtmehr weiter. Bin ich da überhaupt auf dem richtigem Weg?

Wäre cool, wenn mir jemand helfen könnte :wink:
 
Michi2007 hat gesagt.:
..hab so eine Htmldatei als Quelle:
Code:
...
<input type="hidden" name="abc" value="xyz">
...
Nun möchte ich das xyz auslesen..
Eine Möglichkeit wäre:
Code:
package html;
/*
 * ParseHtml.java
 */
import java.io.*;
import java.net.*;
import java.util.regex.*;
import org.htmlparser.*;
import org.htmlparser.lexer.*;
import org.htmlparser.util.*;
public class ParseHtml {
    private URL url;
    private URLConnection con;
    private Lexer lexer;
    private String resultString;
    public ParseHtml() {
        try {
            test();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    private void test()throws Exception{
        url = new URL("http://www.java-forum.org/de/userfiles/user3690/meins.html");
        con = url.openConnection();
        lexer = new Lexer(con);
        while(true){
            Node node = lexer.nextNode();
            if(node == null)break;
            String nodeText = node.getText().trim();
            if(nodeText.equals("")) continue;
            System.out.println(nodeText);
            if(nodeText.matches("(?i).*input.+type.+hidden.*")){
                Pattern regex = Pattern.compile("(?i).*(?<=value {0,20}= {0,20}\")(.*)(?=\")");
                Matcher matcher = regex.matcher(nodeText);
                if (matcher.find())
                    resultString = matcher.group(1);
            }
        }
        System.out.println("\n**********************************************");
        System.out.println("Aus obigem Text wurde folgender Wert ermittelt: "+resultString);
    }
    public static void main(final String[] args) {new ParseHtml();}
}
 
ah sehr gut danke ich werds gleich mal testen!

Ist es auch noch möglich an die Seite, die geparst wird, Daten per POST zu übergeben?
 
hi nach längerer zeit meld ich mcih dann mla wieder.

ja mit post übergeben mein ich einfach genauso wie wenn man ein formular mit method=post absenden würde
 
für sowas nimmste am besten httpclient von apache, oder darauf aufbauend und besser zum aufrufen/parsen/füllen/absenden/testen/... von webseiten htmlunit/httpunit.
 
Danke für den Tipp mit dem htmlunit, das funzt jetzt fast perfekt, ein Problem bleiben die Cookies.

Wie schaffe ich es, dass die Cookies "akzeptiert" werden(es steht in der Konsole immer Cookie rejected), also dass wenn ich ne Seite öffnen nicht kommt, dass man Cookies aktivieren soll (ja scheisse ausgedrückt, ich weiss 😀 ).

Es heisst, der Cookie Handlre von hier
jakarta.apache.org/commons/httpclient/cookies.html
wird benutzt, was das genau bedeutet weiss ich leider nicht. Brauche also Hilfe :wink:

So öffne ich die Seite:

Code:
		URL url = new URL("http://www.seite.de");
		WebClient seite = new WebClient();
		HtmlPage read = (HtmlPage) seite.getPage(url);
[/code]
 
Danke für den Tipp mit dem htmlunit, das funzt jetzt fast perfekt, ein Problem bleiben die Cookies.

Wie schaffe ich es, dass die Cookies "akzeptiert" werden(es steht in der Konsole immer Cookie rejected), also dass wenn ich ne Seite öffnen nicht kommt, dass man Cookies aktivieren soll (ja scheisse ausgedrückt, ich weiss 😀 ).

Es heisst, der Cookie Handlre von hier
jakarta.apache.org/commons/httpclient/cookies.html
wird benutzt, was das genau bedeutet weiss ich leider nicht. Brauche also Hilfe :wink:

So öffne ich die Seite:

Code:
		URL url = new URL("http://www.seite.de");
		WebClient seite = new WebClient();
		HtmlPage read = (HtmlPage) seite.getPage(url);
[/code]
 
Hmm

auf der Seite die du anführst steht doch ganz genau beschrieben wie du den HttpClient dazu bringst Cookies zu managen.

mfg
Drake
 
jo ich weiss, da ich aber allerings ein totaler anfänger bin, weiss ich nicht genau wie ich das anpacken soll 😡😕

Auf der Seite steht man muss es so machen:
Code:
HttpMethod method = new GetMethod();
method.getParams().setCookiePolicy(CookiePolicy.RFC_2109);

und ich hab jetzt das wie gesagt:

Code:
URL url = new URL("http://www.seite.de");
WebClient seite = new WebClient();
 HtmlPage read = (HtmlPage) seite.getPage(url);

müsste ich in meinem fall jetzt

read.getParams().setCookiePolicy(CookiePolicy.RFC_2109);

schreiben?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben