抓取网站数据解析的工作,其中,使用到GET和POST方法获取html数据。

使用GET方式:

  1. /**
  2. * 使用get方式获取html数据
  3. *
  4. * @param strURL(需要访问的网站)
  5. * @return
  6. * @throws Exception
  7. */
  8. public String getHTML(String strURL) throws Exception {
  9. //创建浏览器
  10. HttpClient httpClient = HttpClients.createDefault();
  11. String html = null;
  12. //预防网址链接中包含特殊字符,将url转为uri
  13. URL url = new URL(strURL);
  14. URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(),
  15. url.getQuery(), null);
  16. //使用get方式
  17. HttpGet request = new HttpGet(uri);
  18. HttpResponse response;
  19. try {
  20. //连接网址获取返回的数据
  21. response = httpClient.execute(request);
  22. //将返回的数据按照gbk的方式编码
  23. html = EntityUtils.toString(response.getEntity(), "GBK");
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. //断开连接
  28. request.abort();
  29. //返回网址所发挥的html数据
  30. return html;
  31. }

使用该方法便可以获取得到网站所发挥的html数据。

使用POST方式:

  1. /**
  2. * 使用post方式获取html数据
  3. *
  4. * @param libraryUrl(需要访问的网站)
  5. * @param params(需要传入的参数)
  6. * @return
  7. * @throws Exception
  8. */
  9. public String postHTML(String strURL, List<NameValuePair> params)
  10. throws Exception {
  11. //创建浏览器
  12. HttpClient httpClient = HttpClients.createDefault();
  13. String html = null;
  14. //预防网址链接中包含特殊字符,将url转为uri
  15. URL url = new URL(strURL);
  16. URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(),
  17. url.getQuery(), null);
  18. //使用POST方式
  19. HttpPost request = new HttpPost(uri);
  20. //将参数封装进UrlEncodedFormEntity中
  21. UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
  22. request.setEntity(entity);
  23. HttpResponse response;
  24. try {
  25. //连接网址获取返回的数据
  26. response = httpClient.execute(request);
  27. //将返回的数据按照gbk的方式编码
  28. html = EntityUtils.toString(response.getEntity(), "GBK");
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. }
  32. //断开连接
  33. request.abort();
  34. //返回网址所发挥的html数据
  35. return html;
  36. }

其中,参数params的封装可以参照以下方式:

  1. List<NameValuePair> params = new ArrayList<NameValuePair>();
  2. //以键值对的方式存储
  3. params.add(new BasicNameValuePair("format", "hitcount"));

使用GET与POST方式获取html数据的更多相关文章

  1. Http方式获取网络数据

    通过以下代码可以根据网址获取网页的html数据,安卓中获取网络数据的时候会用到,而且会用Java中的sax方式解析获取到数据.(sax解析主要是解析xml)具体代码如下: package com.wy ...

  2. 基于uFUN开发板的心率计(一)DMA方式获取传感器数据

    前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...

  3. IOS开发之Post 方式获取服务器数据

    //1.创建post方式的 参数字符串url +(NSString *)createPostURL:(NSMutableDictionary *)params { NSString *postStri ...

  4. [NSURLSession/Delegate]用Post方式获取网络数据并把数据显示到表格

    #pragma mark 实现NSURLSessionDataDelegate代理 @interface ViewController ()<UITableViewDataSource,UITa ...

  5. [NSURLConnection]分别用Post和Get方式获取网络数据并把数据显示到表格

    @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> { UIButton* getButton; ...

  6. 用 get 同步/异步 方式获取网络数据并输出

    //同步请求 //创建NSString用来存储请求的网址 NSString* str=@"http://v.juhe.cn/weather/index?format=2&cityna ...

  7. jQuery AJAX获取JSON数据解析多种方式示例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. J2EE Web开发入门—通过action是以传统方式返回JSON数据

    关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...

  9. android—获取网络数据

    取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子.   大家都知道,网络通信,发送请求有两种 ...

随机推荐

  1. MySQL_约束

    MySQL中约束的作用是对表中的数据进行限定,保证数据的正确性,完整性,有效性. 分类:(1)主键约束 primary key(2)非空约束 not NULL (3)唯一约束 unique (4)外键 ...

  2. 南昌网络赛 H The Nth Item

    南昌网络赛The Nth Item 暴力快速幂+unordered_map记忆化 注意:记忆化不能写到快速幂求解函数里,不断调用函数会造成很大的时间浪费 #include<bits/stdc++ ...

  3. Oracle-RAC sysdate和current_date时间不一致,导致客户端连接时间延迟

    [oracle@oracle-db1 ~]$ dateTue Oct 10 14:20:56 CST 2017[oracle@oracle-db1 ~]$ cat /etc/sysconfig/clo ...

  4. sqli-labs(22)

    接下里我们进入第二二关 好像和第21关一样 cookie的base64加密注入 闭合变成了双引号而已 0X01 构造语句进行尝试 " union select 1,2,3# IiB1bmlv ...

  5. 实现Runable接口

    步骤 定义一个实现Runable接口的类,在类中实现run()方法(线程执行事件的方法).创建一个上述类的对象:Thread t=new Thread(new MyThreadt.start());调 ...

  6. 运维自动化之ansible的安装与使用 转

    运维自动化之ansible的安装与使用 随着服务器数量的增长,我们需要一个批量工具去提高工作效率,之前用的是puppet,ansible的简单,适用让我眼前一亮,决定写一篇ansible从安装到基本配 ...

  7. linux系统PS命令,按CPU、内存使用率对进程排序

    https://blog.csdn.net/weixin_42123737/article/details/90081318

  8. 在SOUI3中使用预编译XML

    传统的XML文件通常是utf8编码的文本文件.使用文本文件好处在于方便查阅及修改. SOUI使用XML做为布局描述语言,所有的布局资源都是XML.文本文件格式自由,XML解析器需要对文件中的字符逐个解 ...

  9. hibernate注解创建表总是失败,显示表不存在

    import java.io.Serializable; import javax.persistence.*; import org.hibernate.annotations.GenericGen ...

  10. Unsupervised Image-to-Image Translation Networks

    Abstract: 无监督图像到图像的翻译目的是学习不同域图像的一个联合分布,通过使用来自单独域图像的边缘分布.给定一个边缘分布,可以得到很多种联合分布.如果不加入额外的假设条件的话,从边缘分布无法推 ...