java getconnection_java学习-GET方式抓取网页(UrlConnection和HttpClient)
抓取网页其实就是模拟客户端(PC端,手机端。。。)发送请求,获得响应数据documentation,解析对应数据的过程。---自己理解,错误请告知
一般常用请求方式有GET,POST,HEAD三种
GET请求的数据是作为url的一部分,对于GET请求来说,附带数据长度有限制,数据安全性低
POST请求,数据作为标准数据传输给服务器,数据长度没有限制,数据通过加密传输,安全性高
HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
闲话少说。
通过GET请求获取网页
UrlConnection下载网页通过InputStream读取数据,通过FileOutPutStream将数据写入文件
public classDownloadHtml {/*** 方法说明:用于下载HTML页面
*@paramSrcPath 下载目标页面的URL
*@paramfilePath 下载得到的HTML页面存放本地目录
*@paramfileName 下载页面的名字*/
public static voiddownloadHtmlByNet(String SrcPath,String filePath,String fileName){try{
URL url= newURL(SrcPath);
URLConnection conn=url.openConnection();//设置超时间为3秒
conn.setConnectTimeout(3*1000);//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//输出流
InputStream str =conn.getInputStream();//控制流的大小为1k
byte[] bs = new byte[1024];//读取到的长度
int len = 0;//是否需要创建文件夹
File saveDir = newFile(filePath);if(!saveDir.exists()){
saveDir.mkdir();
}
File file= new File(saveDir+File.separator+fileName);//实例输出一个对象
FileOutputStream out = newFileOutputStream(file);//循环判断,如果读取的个数b为空了,则is.read()方法返回-1,具体请参考InputStream的read();
while ((len = str.read(bs)) != -1) {//将对象写入到对应的文件中
out.write(bs, 0, len);
}//刷新流
out.flush();//关闭流
out.close();
str.close();
System.out.println("下载成功");
}catch(Exception e) {
e.printStackTrace();
}
}//测试
public static voidmain(String[] args) {//下载网页
url是要下载的指定网页,filepath存放文件的目录如d:/resource/html/ ,filename指文件名如"下载的网页.html"
downloadHtmlByNet(url,filepath,filename);
}
}
HttpClient是Apache Jakarta Common 下的子项目。提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包
public static voiddownloadHtmlByNet(String SrcPath,String filePath,String fileName){
DefaultHttpClient httpClient=newDefaultHttpClient();//初始化httpclient
BasicHttpParams httpParams=newBasicHttpParams();//初始化参数
//模拟浏览器访问防止屏蔽程序抓取而返回403错误
user_agent="Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36user_agent="Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"
httpParams.setParameter("http.useragent", user_agent);
httpClient.setParams(httpParams);try{
HttpGet httpGet=newHttpGet(SrcPath);
HttpContext httpContext=newBasicHttpContext();
HttpResponse httpResponse=httpClient.execute(httpGet,httpContext);
HttpEntity entity=httpResponse.getEntity();if(entity!=null){
writeToFile(entity,filePath,fileName);//将entity内容输出到文件}
}catch(ClientProtocolException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{
httpClient.getConnectionManager().shutdown();
}
}
private static voidwriteToFile(HttpEntity entity, String filepath, String filename) {//输出流
try{
InputStream str=entity.getContent();//控制流的大小为1k
byte[] bs = new byte[1024];//读取到的长度
int len = 0;//是否需要创建文件夹
File saveDir = newFile(filePath);if(!saveDir.exists())
{
saveDir.mkdir();
}
File file= new File(saveDir+File.separator+fileName);//实例输出一个对象
FileOutputStream out = newFileOutputStream(file);//循环判断,如果读取的个数b为空了,则is.read()方法返回-1,具体请参考InputStream的read();
while ((len = str.read(bs)) != -1) {//将对象写入到对应的文件中
out.write(bs, 0, len);
}//刷新流
out.flush();//关闭流
out.close();
str.close();
System.out.println("下载成功");
}catch(Exception e){
e.printStackTrace();
}
}
唉,以前学过都忘差不多了,多学多记,下次使用post抓去有用数据。
java getconnection_java学习-GET方式抓取网页(UrlConnection和HttpClient)相关推荐
- Node.js的学习--使用cheerio抓取网页数据
打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...
- java 流的方式抓取网页 但是显示不全_用java抓取网页源代码时总是无法获取完整的源代码信息,求指导...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 无论是用urlconnection还是httpurlconnection都只能获得一部分网页源代码(即有的标签内容在网页上右键-查看源代码能看到,但是用下 ...
- java 网页采集_java采集网页 抓取网页
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.BufferedReader; import java.io ...
- Java抓取网页数据(原网页+Javascript返回数据)
转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...
- java取邮箱前缀_java抓取网页或文件中的邮箱号码
java抓取网页或文件中的邮箱号码 发布时间:2020-10-18 08:58:32 来源:脚本之家 阅读:69 作者:java大渣渣 本文实例为大家分享了java抓取邮箱号码的具体代码,供大家参考, ...
- 网络爬虫学习1 - 使用 requests.get(url) 抓取网页
网络爬虫MOOC学习打卡 - 第一天 文章目录 网络爬虫MOOC学习打卡 - 第一天 一.使用 requests.get(url) 抓取网页 1.从cmd中打开idle 2.调用requests类 - ...
- java 抓取网页乱码_java抓取网页乱码问题的处理
今天同事做了一个我们感觉很牛B的彩票预测程序,采用的是遗传算法实现,于是我"剽"来学习先,但是部署到我电脑上以后,就有问题了: 1.用她的抓取程序得到的网页内容出现乱码,导致数据无 ...
- 网页java代码_java抓取网页代码
导读热词 代码以下 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLCo ...
- java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)
转载请注明出处. 有时候因为种种原因.我们须要採集某个站点的数据.但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据.(2)抓取网页Javas ...
最新文章
- Linux创建指定用户特定指定目录权限
- Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?
- 实录:最低价中标11月车牌之全过程
- 淺談Raid Cache Memory上應用的問題和實踐
- FineUI(开源版)v6.0中FState服务器端验证的实现原理
- SQL Server 自定义快捷键
- 把学生类按单科成绩排序_重庆新高考几个核心点:分数线种类、96个志愿、投档排序规则...
- 【NLP】含10,000 Python问题,伯克利联合团队推出新的代码生成评价基准
- java afconsole_Java ——基础语法
- Win32ASM学习[17]:条件跳转
- IntelliJ IDEA Maven jar包冲突解决,快速发现jar包冲突
- mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
- Spring源码分析之BeanPostProcessor接口和BeanFactoryPostProcessor接口方法不执行原因分析
- 中国可生物降解和生物可吸收支架行业市场供需与战略研究报告
- 上下五千年,人口十几亿。在这遇见你,缘份真神奇
- WebView 加载网页 加载资源 总结 MD
- 工具----10、Backtrack的安装
- VS编译间接引用的DLL不一定输出
- python mro文件_Python中MRO
- 【Day4.7】错过湄南河夜游,去河畔夜市晚餐
热门文章
- matlab傅里叶变换 绘图
- 两径信道与指数信道模型
- IDEA安装TFS插件
- 求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。
- 矩阵和图结构(图论) 最短路径问题 学习笔记
- 千月影视v21 2023年新版 前端+后端+h5 无授权运营级 仅供学习研究使用
- 美国网红python微博_GitHub - dataabc/weiboPR: 用python判断微博用户的影响力
- 开源ERP系统Odoo实施日记--001
- Java——ArrayList(动态数组)介绍
- The JAVA_HOME environment variable is not defined correctly的解决方法