【java爬虫】网络爬虫思路
2024-08-31 20:12:47
主要是针对某个单独的网站进行页面的爬取,方式有好多种,记录一下大体的思路。
方法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();
}
}
}
最新文章
- pt-pmp
- 关于jsp的内置对象request和response的重定向和转化(待补充)
- Visual Studio 2015上安装Entity Framework Power Tools
- Git系列教程二 基础介绍
- Java应用程序项目的打包与发行(run.bat形式)
- ZeroMQ(java)中监控Socket
- Java主要有那几种文件类型,各自作用
- hdu 1403 Longest Common Substring(最长公共子字符串)(后缀数组)
- linux的nohup命令的用法
- PHP常用代码大全(新手入门必备)
- linux配置使用外部smtp发送邮件
- 12.21-Android ServerSocket
- URL, URI, URN三者区别
- sonyflake.go
- 在Windows环境下搭建Nginx文件服务器(简单实用版)
- visual studio开启多核编译方法《转》
- Android studio 自动导入(全部)包 import
- [LeetCode] 113. Path Sum II ☆☆☆(二叉树所有路径和等于给定的数)
- Unity 灯光探针用法教程
- Sybase数据库常用sql语言
热门文章
- Android发展_备份短信
- 信号、系统与滤波器设计(matlab)
- [科普]MinGW vs MinGW-W64及其它(比较有意思,来自mingw吧)
- Codeforces Round #263 (Div. 2) proA
- debian 下py2.7 安装mysql模块
- 在 Swift 中实现单例方法
- js 超链接点击
- 《芒果TV》UWP版利用Windows10通用平台特性,率先支持Xbox One平台
- /\B(?=(?:\d{3})+$)/g 一条令人费解的正则表达式
- GitLab一键式安装bitnami 专题