`

commons-httpclient和htmlparser应用之博客搬家

阅读更多

把以前在百度空间收集的文章搬到javaeye了,主要用到的lib就是commons-httpclient和htmlparser,在此记录下一些关键的代码片段。

 

jar包清单

commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-lang.jar
commons-logging-1.1.jar
htmlparser.jar
log4j-1.2.15.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar

 

扩展 org.apache.commons.httpclient.HttpClient,覆盖其executeMethod方法处理cookie

package util;

import java.io.IOException;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpState;

public class HttpClientEx extends HttpClient {

    private HttpState httpState = new HttpState(); // http状态对象,主要保存cookie
    private String cookie = "";

    public int executeMethod(HttpMethod httpMethod) throws IOException, HttpException {
        String cookie = this.getCookie();
        String uri = httpMethod.getURI().getHost();
        httpState.addCookie(new Cookie(uri, "cookie", cookie, "/", null, false));
        this.setState(httpState);

        int statues = super.executeMethod(httpMethod);

        Header[] headerArray = httpMethod.getResponseHeaders();
        for (Header h : headerArray) {
            if (h.getName().trim().equalsIgnoreCase("Set-Cookie")) {
                if (!this.getCookie().equals("")) { // 如果值不为空
                    this.setCookie(this.getCookie() + ";" + h.getValue());
                } else {
                    this.setCookie(h.getValue());
                }
            }
        }
        return statues;
    }

    public String getCookie() {
        return cookie;
    }

    public void setCookie(String cookie) {
        this.cookie = cookie;
    }

}

 

 get url

String url = HTTP_HI_BAIDU_COM + USER_ID + "/blog";
HttpClient client = new HttpClientEx();
GetMethod getMethod = new GetMethod(url);
client.executeMethod(getMethod);
String body = new String(getMethod.getResponseBody(), getMethod.getResponseCharSet());
getMethod.releaseConnection(); 
logger.debug("日志列表页面\n{}", body);

 

分析html页面中的div元素

Parser parser = Parser.createParser(body, getMethod.getResponseCharSet());
NodeFilter filter = new TagNameFilter("div");
NodeList nodeList = parser.parse(filter);
for (int i = 0; i < nodeList.size(); i++) {
   Div div = (Div) nodeList.elementAt(i);
   if ("m_blog".equals(div.getAttribute("id"))) {
     logger.debug("id为m_blog的div内容\n{}", div.toHtml()); 
   }
}

 

查找含有特定文字的节点集合

NodeList searchFor = div.searchFor("类别");

 

设置User-Agent和post数据字符编码

private static final String USER_AGENT = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; iCafeMedia; InfoPath.2)";
private static final String CHARSET = "UTF-8";

HostParams params = new HostParams();
params.setParameter(HttpMethodParams.USER_AGENT,USER_AGENT);
params.setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CHARSET);
client.getHostConfiguration().setParams(params);

 

post url

String url = HOST + "/login";
PostMethod postMethod = new PostMethod(url);
postMethod.setParameter("name", "fangwei");
postMethod.setParameter("password", "******");
client.executeMethod(postMethod);

 

 

3
0
分享到:
评论

相关推荐

    Commons-httpClient3.1.Jar,htmllexer.jar,htmlparser.jar

    在提供的信息中,我们关注的是三个Java库:`Commons-httpClient3.1.jar`, `htmllexer.jar`, 和 `htmlparser.jar`。这些库在构建简易爬虫时扮演着关键角色。下面我们将详细探讨这三个库的功能、用途以及如何在实际...

    commons-httpclient-3.1-jar

    还要用到httpcomponents-core-4和HTMLParser-2.0-SNAPSHOT,后者是用来解析页面元素的。用过滤器能很容易抓到要的元素。(对下过这个资源的人说声抱歉,之前个人失误上传的是src文件。现在把资源分改为0)

    httpclient用到的jar文件

    开发httpclient需要用到的jar文件commons-codec-1.3.jar,commons-httpclient-3.0.1.jar,commons-lang.jar,commons-logging-1.1.jar,commons-logging-adapters-1.1.jar,commons-logging-api-1.1.jar,filterbuilder....

    HttpClient3.0的jar包

    HttpClient3.0的jar包,包含了commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging1.1.jar,dom4j-1.6.1.jar,htmlcleaner-2.2.jar,htmlparser.jar,jericho-html-3.1.jar

    使用 HttpClient 和 HtmlParser 实现简易爬虫

    ### 使用HttpClient和HtmlParser实现简易爬虫的知识点详解 #### 一、HttpClient与HtmlParser简介 **HttpClient简介:** HttpClient是Jakarta Commons项目中的一个重要组件,用于提供灵活且高效的HTTP协议支持。它...

    java jar包

    activation antlr-3.3 axis-ant axis chardet commons-beanutils-1.8.0-javadoc commons-beanutils-1.8.0-sources commons-beanutils-1.8.0 commons-beanutils-bean-collections-1.8.0 commons-beanutils-core-1.8.0...

    爬虫 httpclient所有jar

    commons-beanutils-1.8.3 commons -codec-1.6 commons -collections-3.2.1 commons- lang-2.5.jar commons- longging-1.13.jar4.3.3.jar ezmorph-1.0.6.jar fluent-hc-4.3.3.jar gson-2.2.4.jar httpclient-4.3.3....

    jar包(java开发所需)

    commons-httpclient-3.1.jar commons-io-1.4.jar commons-io-1.4-javadoc.jar commons-io-1.4-sources.jar commons-lang-2.4.jar commons-lang-2.4-javadoc.jar commons-lang-2.4-sources.jar commons-logging-1.0.4...

    使用_HttpClient_和_HtmlParser_实现简易爬虫

    HttpClient 和 HtmlParser 是两个在Java开发中用于网络通信和网页解析的重要开源库。HttpClient 主要负责处理HTTP协议的网络请求,如GET和POST,而HtmlParser则用于解析HTML文档,提取所需信息。以下是对这两个库的...

    OSChina 所有jar

    9 commons-httpclient-3.1.jar HTTP客户端 10 commons-io-1.4.jar IO处理包 11 commons-lang-2.4.jar 语言处理包 12 commons-logging-1.1.1.jar 日志包 13 cos.jar 文件上传 14 ehcache-core-1.7.2.jar 缓存 ...

    java读取操作xml及对应jar包

    java读取操作xml及对应jar包; apache-log4j-1.2.16; commons-codec-1.3; commons-httpclient-3.1; commons-logging-1.1;...HTMLParser-2.0-SNAPSHOT-bin; xercesImpl,代码是我自己写的、质量有保证。

    测试爬虫+lunence的一些jar文件

    测试爬虫+lunence 但是jar文件找了好久 都不全,这里放了一些常用的jar文件,希望能帮到需要的人,一下为jar文件列表htmlparser-1.6.jar、IKAnalyzer2012FF_u1.jar、lucene-highlighter-4.7.2.jar、lucene-...

    模拟客户端程序

    在描述中提到的几个依赖库,如`commons-codec.jar`, `commons-httpclient.jar`, `commons-logging.jar`, `htmlparser.jar` 和 `httpcore.jar`,都是HttpClient使用的相关组件。 1. `commons-codec.jar`: 这是Apache...

    基于Java HttpClient和Htmlparser实现网络爬虫代码

    Java HttpClient 和 Htmlparser 是两种常用于构建网络爬虫的关键库。HttpClient 提供了与 HTTP 协议交互的能力,而 Htmlparser 则是用来解析 HTML 文档的工具。在本文中,我们将详细探讨如何利用这两个库来实现一个...

    htmlparse.jar httpClient.jar je.jar

    6. **commons-lang.jar**: Apache Commons Lang是一个提供各种实用工具函数的库,它扩展了Java的标准库,包括字符串处理、日期和时间操作、数学计算以及对象创建和比较等功能。 7. **htmllexer.jar**: 这可能是...

    jsoup.jar完整包

    java爬虫技术所需要的jar包,里面有jsuop技术相关的jar:chardet.jar、commons-lang.jar、commons-logging.jar、cpdetector.jar、httpclient-4.2.5.jar、httpcore-4.2.4.jar、jsoup-1.7.2.jar;;附加 htmlparser ...

    网络爬虫JAVA扩展包

    本篇文章将详细讲解标题中提到的"网络爬虫JAVA扩展包",包括其中包含的几个关键组件:`commons-httpclient-3.1.jar`、`htmllexer.jar`和`htmlparser.jar`,以及它们在网络爬虫开发中的作用。 首先,`commons-...

    编写爬虫相关的api及jar文件

    在IT行业中,爬虫开发是一项重要的技能,它用于自动化地抓取互联网上的数据。本压缩包包含了一些关键的API文档和库,...通过理解和应用这些API,开发者可以构建高效、可靠的爬虫系统,有效地抓取和处理互联网上的数据。

    国外的蜘蛛程序

    【标题】"国外的蜘蛛程序" 涉及的核心知识点主要围绕网络爬虫技术,这是一种自动获取网页信息的程序,通常用于...在实际应用中,还需要考虑到数据清洗、存储、反爬策略以及合规性问题,确保爬虫程序的高效和合法运行。

Global site tag (gtag.js) - Google Analytics