把以前在百度空间收集的文章搬到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);
分享到:
相关推荐
在提供的信息中,我们关注的是三个Java库:`Commons-httpClient3.1.jar`, `htmllexer.jar`, 和 `htmlparser.jar`。这些库在构建简易爬虫时扮演着关键角色。下面我们将详细探讨这三个库的功能、用途以及如何在实际...
还要用到httpcomponents-core-4和HTMLParser-2.0-SNAPSHOT,后者是用来解析页面元素的。用过滤器能很容易抓到要的元素。(对下过这个资源的人说声抱歉,之前个人失误上传的是src文件。现在把资源分改为0)
开发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包,包含了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简介:** HttpClient是Jakarta Commons项目中的一个重要组件,用于提供灵活且高效的HTTP协议支持。它...
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...
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....
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 是两个在Java开发中用于网络通信和网页解析的重要开源库。HttpClient 主要负责处理HTTP协议的网络请求,如GET和POST,而HtmlParser则用于解析HTML文档,提取所需信息。以下是对这两个库的...
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包; 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文件找了好久 都不全,这里放了一些常用的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 是两种常用于构建网络爬虫的关键库。HttpClient 提供了与 HTTP 协议交互的能力,而 Htmlparser 则是用来解析 HTML 文档的工具。在本文中,我们将详细探讨如何利用这两个库来实现一个...
6. **commons-lang.jar**: Apache Commons Lang是一个提供各种实用工具函数的库,它扩展了Java的标准库,包括字符串处理、日期和时间操作、数学计算以及对象创建和比较等功能。 7. **htmllexer.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扩展包",包括其中包含的几个关键组件:`commons-httpclient-3.1.jar`、`htmllexer.jar`和`htmlparser.jar`,以及它们在网络爬虫开发中的作用。 首先,`commons-...
在IT行业中,爬虫开发是一项重要的技能,它用于自动化地抓取互联网上的数据。本压缩包包含了一些关键的API文档和库,...通过理解和应用这些API,开发者可以构建高效、可靠的爬虫系统,有效地抓取和处理互联网上的数据。
【标题】"国外的蜘蛛程序" 涉及的核心知识点主要围绕网络爬虫技术,这是一种自动获取网页信息的程序,通常用于...在实际应用中,还需要考虑到数据清洗、存储、反爬策略以及合规性问题,确保爬虫程序的高效和合法运行。