使用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"));
 }

}

 

用HttpClient和HtmlParser构建的网络爬虫程序

HttpClient是一个很方便进行Http连接操作的工具包,用它可以设置代理和模拟浏览器下载网页。而HtmlParser则是一个开源的,可以对HTML进行处理的工具包,可以很方便的对HTML进行解析...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2011年06月09日 11:16
  • 4311

利用HttpClient和HtmlParser构造简单爬虫

/** * 爬虫主方法入口类 * @author Qing * */ public class Clawler { /** * 用种子url初始化url队列 * @param see...
  • u010726042
  • u010726042
  • 2016年04月20日 11:25
  • 570

HtmlParser基础教程

1、相关资料 官方文档:http://htmlparser.sourceforge.net/samples.html API:http://htmlparser.sourceforge.net/j...
  • jediael_lu
  • jediael_lu
  • 2014年05月22日 11:33
  • 27246

c#信息抓取二:HTMLParser.net使用详解

第一步还是添加引用,在上文已经说过,不再赘述。代码:using System; using System.Collections.Generic; using System.ComponentMo...
  • malimalihun
  • malimalihun
  • 2011年01月11日 12:48
  • 4561

httpClient抓取页面的简易使用

本次用的httpClient版本是4.5.2,maven坐标如下所示:   org.apache.httpcomponents httpclient 4.5.2     此版本的...
  • hellomvn
  • hellomvn
  • 2016年05月12日 11:22
  • 205

Python 网络抓取和文本挖掘-1 HTML 和 HTMLParser

应用urllib2和HTMLParser从网页中提取需要的数据。
  • hjh00
  • hjh00
  • 2017年02月02日 19:41
  • 887

Httpclient和htmlparser使用

只是希望能记住这些简单的用法   http://endual.iteye.com/blog/1397425
  • psyixiao
  • psyixiao
  • 2012年04月10日 12:55
  • 319

网络爬虫--如何抓取html页面和httpClient的使用

一、写在前面 上篇文章以网易微博爬虫为例,给出了一个很简单的微博爬虫的爬取过程,大概说明了网络爬虫其实也就这么回事,或许初次看到这个例子觉得有些复杂,不过没有关系,上篇文章给的例子只是让大家对爬虫过...
  • after_you
  • after_you
  • 2017年03月23日 18:18
  • 2847

通过HtmlParser和HttpClient抽取网页关键字并解决乱码问题

基于HtmlParser和HttpClient抽取网页关键字,主要抽取网页的title、description、和keywords。HttpClient主要用来访问网页,而HtmlParser主要用来...
  • liqing08229
  • liqing08229
  • 2013年01月24日 14:13
  • 3891

利用HtmlParser来提取网页内容

本文参考:李腾飞CSM实战   使用正则表达式来分析网页的内容比较麻烦,因为html标签不区分大小写,而且有的时候没有结尾。 HtmlParser也有下载网页的功能,不过他不是专门用来做这个,所...
  • zccbbg
  • zccbbg
  • 2013年04月14日 22:12
  • 1949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用HttpClient登陆web-login使用JerichoHTMLParser和htmlparser抓取html
举报原因:
原因补充:

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