主要是针对某个单独的网站进行页面的爬取,方式有好多种,记录一下大体的思路。

方法1:

a、通过http请求获取返回的静态页面。

b、将返回的字符串页面进行split,切割成字符串数组。

c、遍历字符串数组,通过正则筛选所需要的链接。

d、拼接获取到的链接,发送请求获取页面。

实际应用:

遇到过:网站验证码,单位时间内访问次数限制,还有ajax填充数据等问题。ajax post请求还算好解决,但是验证码和访问次数限制感觉很无力,Orz...

方法1:获取一整张页面

	public static String getStringHtml(String url){
//实例化客户端
HttpClient client = new DefaultHttpClient();
HttpGet getHttp = new HttpGet(url);
//整张页面
String content = null;
HttpResponse response; try {
response = client.execute(getHttp);
//获取到responce下载
HttpEntity entity = response.getEntity();
if(entity!=null){
content = EntityUtils.toString(entity);
//System.out.println(content);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
client.getConnectionManager().shutdown();
}
return content;
}

方法:将文件写出到指定文件夹

public static void writetoFile(String context,String fileName)throws Exception{
// 构建指定文件
File file = new File("E:" + File.separator + "htmlfile"+File.separator+fileName);
OutputStream out = null;
try {
// 根据文件创建文件的输出流
out = new FileOutputStream(file);
// 把内容转换成字节数组
byte[] data = context.getBytes();
// 向文件写入内�?
out.write(data);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭输出流
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
 

最新文章

  1. pt-pmp
  2. 关于jsp的内置对象request和response的重定向和转化(待补充)
  3. Visual Studio 2015上安装Entity Framework Power Tools
  4. Git系列教程二 基础介绍
  5. Java应用程序项目的打包与发行(run.bat形式)
  6. ZeroMQ(java)中监控Socket
  7. Java主要有那几种文件类型,各自作用
  8. hdu 1403 Longest Common Substring(最长公共子字符串)(后缀数组)
  9. linux的nohup命令的用法
  10. PHP常用代码大全(新手入门必备)
  11. linux配置使用外部smtp发送邮件
  12. 12.21-Android ServerSocket
  13. URL, URI, URN三者区别
  14. sonyflake.go
  15. 在Windows环境下搭建Nginx文件服务器(简单实用版)
  16. visual studio开启多核编译方法《转》
  17. Android studio 自动导入(全部)包 import
  18. [LeetCode] 113. Path Sum II ☆☆☆(二叉树所有路径和等于给定的数)
  19. Unity 灯光探针用法教程
  20. Sybase数据库常用sql语言

热门文章

  1. Android发展_备份短信
  2. 信号、系统与滤波器设计(matlab)
  3. [科普]MinGW vs MinGW-W64及其它(比较有意思,来自mingw吧)
  4. Codeforces Round #263 (Div. 2) proA
  5. debian 下py2.7 安装mysql模块
  6. 在 Swift 中实现单例方法
  7. js 超链接点击
  8. 《芒果TV》UWP版利用Windows10通用平台特性,率先支持Xbox One平台
  9. /\B(?=(?:\d{3})+$)/g 一条令人费解的正则表达式
  10. GitLab一键式安装bitnami 专题