使用HttpClient登陆web-login使用JerichoHTMLParser和htmlparser抓取html

转载 2007年09月19日 13:15:00

httpclient http://jakarta.apache.org/commons/httpclient/

Jericho HTML Parser http://jerichohtml.sourceforge.net/

htmlparser http://sourceforge.net/projects/htmlparser/

HttpClientLogin.java

 package web;

import java.io.IOException;
import java.util.Iterator;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

import au.id.jericho.lib.html.FormField;
import au.id.jericho.lib.html.FormFields;
import au.id.jericho.lib.html.Source;

public class HttpClientLogin{

 public static void main(String args[]) throws HttpException, IOException,
   ParserException {
  HttpClient client = new HttpClient();
  client.getParams().setContentCharset("utf-8");
  client.getHostConfiguration().setHost("127.0.0.1", 80, "http");
  client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

  GetMethod authget = new GetMethod("/admin/login.php");
  client.executeMethod(authget);
  authget.releaseConnection();

  PostMethod authpost = new PostMethod("/admin/login.php");
  NameValuePair action = new NameValuePair("action",
    "http://127.0.0.1/admin/login.php");
  NameValuePair method = new NameValuePair("method", "post");
  NameValuePair userid = new NameValuePair("TextBox1", "kefu");
  NameValuePair password = new NameValuePair("TextBox2", "kefu");

  authpost.setRequestBody(new NameValuePair[] { method, action, userid,
    password, });
  client.executeMethod(authpost);
  authpost.releaseConnection();

  String anotherPage = "/admin/index.php";
  GetMethod anotherPageGet = new GetMethod(anotherPage);
  client.executeMethod(anotherPageGet);

  Source source = new Source(anotherPageGet.getResponseBodyAsStream());

  source.fullSequentialParse();
  FormFields formFields = source.findFormFields();

  String temp = "";
  for (Iterator i = formFields.iterator(); i.hasNext();) {
   FormField formField = (FormField) i.next();
   if (formField.getName() != null
     && formField.getName().equals("temp")) {
    temp = (String) formField.getFormControl().getAttributesMap()
      .get("value");
   }
  }// 抓取 temp filed 当访问该page产生的临时值

  NameValuePair temp_ = new NameValuePair("temp", temp);

  PostMethod anotherPagePost = new PostMethod(anotherPage);// 提交
  anotherPagePost.setRequestBody(new NameValuePair[] { temp_ });// 加入该查询条件

  client.executeMethod(anotherPagePost);// 提交查询条件

  String resultHtml = anotherPagePost.getResponseBodyAsString();
  Parser parser = Parser.createParser(new String(resultHtml.getBytes(),
    "8859_1"), "8859-1");

  String filterStr = "table";
  NodeFilter filter = new TagNameFilter(filterStr);
  NodeList nodes = parser.extractAllNodesThatMatch(filter);// 抓取查询结果
  Node node = nodes.elementAt(3);// 截取talbe

  String result = new String(node.toHtml().getBytes("8859_1"));
 }

}

 

相关文章推荐

使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies

对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览...

使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies .

对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览...

使用 HttpClient 和 HtmlParser 实现简易爬虫

使用 HttpClient 和 HtmlParser 实现简易爬虫 分类: 网络应用 作者:蒋宏伟 (jianghongwei_tju@yahoo.com.cn), ...

使用 HttpClient 和 HtmlParser 实现简易爬虫

这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Inte...

无法使用SQL login去登陆SQL Server - 'Password did not match'

问题描述:在某一台机器上的management studio,始终无法使用SQL login去登陆SQL Server。但是如果在其他的机器上,使用同样的SQL login是可以登陆SQL Serve...
  • apgcdsd
  • apgcdsd
  • 2011年04月21日 10:59
  • 255

使用HtmlParser解析HTML (C#版)

本文介绍了.net 版的一个HTMLParser网页解析开源类库(Winista.HTMLParser)的功能特性、工作原理和使用方法。对于使用.net进行Web信息提取的开发人员进行了一次HTMLP...

Java解析HTML之HTMLParser使用与详解

HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,...

使用HtmlParser提取HTML文本块

听人介绍说HtmlParser(Java版本)在网页预处理方面做得不错,于是最近几日就研究了一番,虽说没有什么大的收获,但是难得能够让我一个对html标签一无所知的人,认识了其树状结构的玄机,并实现了...
  • zzxian
  • zzxian
  • 2011年09月04日 23:00
  • 8383
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用HttpClient登陆web-login使用JerichoHTMLParser和htmlparser抓取html
举报原因:
原因补充:

(最多只允许输入30个字)