资源简介
自己动手写网络爬虫完整版 源码
代码片段和文件信息
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class DownLoadFile {
/**
* 根据 url 和网页类型生成需要保存的网页的文件名 去除掉 url 中非文件名字符
*/
public String getFileNameByUrl(String urlString contentType)
{
//remove http://
url=url.substring(7);
//text/html类型
if(contentType.indexOf(“html“)!=-1)
{
url= url.replaceAll(“[\\?/:*|<>\“]“ “_“)+“.html“;
return url;
}
//如application/pdf类型
else
{
return url.replaceAll(“[\\?/:*|<>\“]“ “_“)+“.“+
contentType.substring(contentType.lastIndexOf(“/“)+1);
}
}
/**
* 保存网页字节数组到本地文件 filePath 为要保存的文件的相对地址
*/
private void saveToLocal(byte[] data String filePath) {
try {
DataOutputStream out = new DataOutputStream(new FileOutputStream(
new File(filePath)));
for (int i = 0; i < data.length; i++)
out.write(data[i]);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/* 下载 url 指向的网页 */
public String downloadFile(String url) {
String filePath = null;
/* 1.生成 HttpClinet 对象并设置参数 */
HttpClient httpClient = new HttpClient();
// 设置 Http 连接超时 5s
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(
5000);
/* 2.生成 GetMethod 对象并设置参数 */
GetMethod getMethod = new GetMethod(url);
// 设置 get 请求超时 5s
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT 5000);
// 设置请求重试处理
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER
new DefaultHttpMethodRetryHandler());
/* 3.执行 HTTP GET 请求 */
try {
int statusCode = httpClient.executeMethod(getMethod);
// 判断访问的状态码
if (statusCode != HttpStatus.SC_OK) {
System.err.println(“Method failed: “
+ getMethod.getStatusLine());
filePath = null;
}
/* 4.处理 HTTP 响应内容 */
byte[] responseBody = getMethod.getResponseBody();// 读取为字节数组
// 根据网页 url 生成保存时的文件名
filePath = “temp\\“
+ getFileNameByUrl(url getMethod.getResponseHeader(
“Content-Type“).getValue());
saveToLocal(responseBody filePath);
} catch (HttpException e) {
// 发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println(“Please check your provided http address!“);
e.printStackTrace();
} catch (IOException e) {
// 发生网络异常
e.printStackTrace();
} finally {
// 释放连接
getMethod.releaseConnection();
}
return filePath;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4478 2010-06-28 13:46 Chap04\Channelli
文件 17812 2010-06-28 13:46 Chap04\ExtractContext.java
文件 825 2010-04-24 11:08 Chap04\HtmlParser\.classpath
文件 386 2010-05-04 08:52 Chap04\HtmlParser\.project
文件 629 2010-04-19 16:37 Chap04\HtmlParser\.settings\org.eclipse.jdt.core.prefs
文件 11334 2010-04-26 15:54 Chap04\HtmlParser\src\com\lietu\htmlParser\HtmlParser.java
文件 8312 2006-09-23 14:25 Chap04\HtmlParser\src\doc-files\building.html
文件 5074 2006-09-17 12:47 Chap04\HtmlParser\src\doc-files\overview.html
文件 4896 2006-09-17 13:00 Chap04\HtmlParser\src\doc-files\using.html
文件 26096 2006-09-17 07:24 Chap04\HtmlParser\src\org\htmlparser\Attribute.java
文件 10617 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\BeanyBaby.form
文件 13209 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\BeanyBaby.java
文件 13762 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\FilterBean.java
文件 6547 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\HTMLli
文件 9020 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\HTMLTextBean.java
文件 213 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\images\Chain16.gif
文件 278 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\images\Chain32.gif
文件 140 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\images\Knot16.gif
文件 167 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\images\Knot32.gif
文件 8602 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\li
文件 2188 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\package.html
文件 23110 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\beans\StringBean.java
文件 3485 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\AndFilter.java
文件 13731 2006-09-22 20:26 Chap04\HtmlParser\src\org\htmlparser\filters\CssSelectorNodeFilter.java
文件 4224 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\HasAttributeFilter.java
文件 5213 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\HasChildFilter.java
文件 4821 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\HasParentFilter.java
文件 3556 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\HasSiblingFilter.java
文件 1825 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\IsEqualFilter.java
文件 3184 2006-09-17 07:25 Chap04\HtmlParser\src\org\htmlparser\filters\li
............此处省略2237个文件信息
相关资源
- vnc移植成功源码包
- jdk源码
- 用Cocos2d-x编写大富翁游戏源码,可联
- 50个著名木马源码灰鸽子冰河广外女生
- 《Windows设备驱动程序WDF开发》源码
- 40个h5小游戏源码
- web安全机器学习入门-pdf+源码全套
- 十三张机器人完美控制
- Fly3D 2.0 3D引擎源码及文档
- Delphi BusinessSkinForm 最全皮肤库 256套皮
- 核数据处理程序njoy源码
- 奇怪的大冒险源码
- Authorware----自制简历
- ERP管理系统源码
- 精通Excel 2007:数据分析与业务建模光
- QT版拼图游戏PuzzleGame源码+可执行程序
- 维博招生系统伪静态规则及系统源码
- Qt 合集
- 安卓公交查询系统毕业设计论文和源
- 秒余额灰色项目源码(含视频教程)
- 自动发卡平台源码非花旗发卡平台+安
- STL源码剖析 高清 带目录电子书+源代
- ClamAV的VS2005工程源码
- Activiti官方唯一推荐中文书籍——《
- 开心农场实现教程
- SSM整合时的Maven项目源码
- IONIC+PhoneGap项目源码
- 数独游戏源码
- 简单天气预报demo
- 8套源码8套H5 app源代码—WeX5移动开发
评论
共有 条评论