文档章节

(JAVA)抓取其它服务器返回的数据

码
 
发布于 2016/01/30 13:47
字数 455
阅读 7
收藏 0

    废话没有,抓取post请求的数据

/**
   * post请求
   * 
   * @param urlStr
   *          请求地址
   * @return
   * @throws MalformedURLException
   * @throws IOException
   * @throws UnsupportedEncodingException
   */
  private String Capture(String urlStr) throws MalformedURLException, IOException, UnsupportedEncodingException {
    URL url = new URL(urlStr);
    /**
     * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
     * java.net.URL and //java.net.URLConnection
     */
    URLConnection connection = url.openConnection();
    /**
     * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
     * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
     */
    connection.setDoOutput(true);
    /**
     * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
     */
    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
    out.write("username=kevin&password=*********"); // post的关键所在!
    // remember to clean up
    out.flush();
    out.close();
    /**
     * 这样就可以发送一个看起来象这样的POST: POST /jobsearch/jobsearch.cgi HTTP 1.0 ACCEPT:
     * text/plain Content-type: application/x-www-form-urlencoded
     * Content-length: 99 username=bob password=someword
     */
    // 一旦发送成功,用以下方法就可以得到服务器的回应:
    String sCurrentLine;
    String sTotalString;
    sCurrentLine = "";
    sTotalString = "";
    InputStream l_urlStream;
    l_urlStream = connection.getInputStream();
    // 传说中的三层包装阿! (需要把流先转码,防止中文乱码,如果是在读取的时候再转码也造成部分乱码)
    BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream, "utf-8"));
    while ((sCurrentLine = l_reader.readLine()) != null) {
      sTotalString += sCurrentLine + "\r\n";
    }
    return sTotalString;
  }

第二种,抓取get请求的数据

private String getCapture(String urlStr) throws MalformedURLException, IOException, UnsupportedEncodingException {
    URL realUrl = new URL(urlStr);

    URLConnection connection = realUrl.openConnection();
    // 设置通用的请求属性
    connection.setRequestProperty("accept", "*/*");
    connection.setRequestProperty("connection", "Keep-Alive");
    connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    // 建立实际的连接
    connection.connect();
    // 定义 BufferedReader输入流来读取URL的响应
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
    String line;
    String sTotalString = "";
    while ((line = in.readLine()) != null) {
      sTotalString += line + "\r\n";
    }
    return sTotalString;
  }

很简单,需要注意的就是几个地方的转码问题。

© 著作权归作者所有

共有 人打赏支持
上一篇: 20161203
码

粉丝 1
博文 15
码字总数 3386
作品 0
深圳
私信 提问
玩大数据一定用得到的19款 Java 开源 Web 爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引...

两味真火
2016/09/23
15.4K
12
RMI:Java中的分布式计算框架

RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一。其实...

qq_39521554
2018/05/15
0
0
hibernate xml配置文件参数详解

Hibernate 参数设置一览表 表 3.4. Hibernate JDBC和连接(connection)属性 表 3.5. Hibernate缓存属性 表 3.6. Hibernate事务属性 表 3.7. 其他属性 你应当总是为你的数据库将hibernate.dia...

laigous
2013/01/17
0
0
Spark Sql 连接mysql

版权声明:本文由董可伦首发于https://dongkelun.com,非商业转载请注明作者及原创出处。商业转载请联系作者本人。 https://blog.csdn.net/dkl12/article/details/80246170 我的原创地址:h...

董可伦
2018/05/09
0
0
网站爬虫及模拟下单(Golang/Java, Kafka, mysql)

最好是golang,如果JAVA经验很足,也可以考虑JAVA 一、整体功能需求:网站爬虫处理及post 简单爬虫及模拟下单(post):A爬虫模块:用Java程序模拟登录指定的若干个类似网站,每几分钟定时抓取...

greatLIU
2017/02/26
5
10

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部