抓取网页其实就是模拟客户端(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)相关推荐

  1. Node.js的学习--使用cheerio抓取网页数据

    打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...

  2. java 流的方式抓取网页 但是显示不全_用java抓取网页源代码时总是无法获取完整的源代码信息,求指导...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 无论是用urlconnection还是httpurlconnection都只能获得一部分网页源代码(即有的标签内容在网页上右键-查看源代码能看到,但是用下 ...

  3. java 网页采集_java采集网页 抓取网页

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.BufferedReader; import java.io ...

  4. Java抓取网页数据(原网页+Javascript返回数据)

    转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...

  5. java取邮箱前缀_java抓取网页或文件中的邮箱号码

    java抓取网页或文件中的邮箱号码 发布时间:2020-10-18 08:58:32 来源:脚本之家 阅读:69 作者:java大渣渣 本文实例为大家分享了java抓取邮箱号码的具体代码,供大家参考, ...

  6. 网络爬虫学习1 - 使用 requests.get(url) 抓取网页

    网络爬虫MOOC学习打卡 - 第一天 文章目录 网络爬虫MOOC学习打卡 - 第一天 一.使用 requests.get(url) 抓取网页 1.从cmd中打开idle 2.调用requests类 - ...

  7. java 抓取网页乱码_java抓取网页乱码问题的处理

    今天同事做了一个我们感觉很牛B的彩票预测程序,采用的是遗传算法实现,于是我"剽"来学习先,但是部署到我电脑上以后,就有问题了: 1.用她的抓取程序得到的网页内容出现乱码,导致数据无 ...

  8. 网页java代码_java抓取网页代码

    导读热词 代码以下 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLCo ...

  9. java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)

    转载请注明出处. 有时候因为种种原因.我们须要採集某个站点的数据.但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据.(2)抓取网页Javas ...

最新文章

  1. Linux创建指定用户特定指定目录权限
  2. Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?
  3. 实录:最低价中标11月车牌之全过程
  4. 淺談Raid Cache Memory上應用的問題和實踐
  5. FineUI(开源版)v6.0中FState服务器端验证的实现原理
  6. SQL Server 自定义快捷键
  7. 把学生类按单科成绩排序_重庆新高考几个核心点:分数线种类、96个志愿、投档排序规则...
  8. 【NLP】含10,000 Python问题,伯克利联合团队推出新的代码生成评价基准
  9. java afconsole_Java ——基础语法
  10. Win32ASM学习[17]:条件跳转
  11. IntelliJ IDEA Maven jar包冲突解决,快速发现jar包冲突
  12. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
  13. Spring源码分析之BeanPostProcessor接口和BeanFactoryPostProcessor接口方法不执行原因分析
  14. 中国可生物降解和生物可吸收支架行业市场供需与战略研究报告
  15. 上下五千年,人口十几亿。在这遇见你,缘份真神奇
  16. WebView 加载网页 加载资源 总结 MD
  17. 工具----10、Backtrack的安装
  18. VS编译间接引用的DLL不一定输出
  19. python mro文件_Python中MRO
  20. 【Day4.7】错过湄南河夜游,去河畔夜市晚餐

热门文章

  1. matlab傅里叶变换 绘图
  2. 两径信道与指数信道模型
  3. IDEA安装TFS插件
  4. 求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。
  5. 矩阵和图结构(图论) 最短路径问题 学习笔记
  6. 千月影视v21 2023年新版 前端+后端+h5 无授权运营级 仅供学习研究使用
  7. 美国网红python微博_GitHub - dataabc/weiboPR: 用python判断微博用户的影响力
  8. 开源ERP系统Odoo实施日记--001
  9. Java——ArrayList(动态数组)介绍
  10. The JAVA_HOME environment variable is not defined correctly的解决方法