使用GET与POST方式获取html数据
抓取网站数据解析的工作,其中,使用到GET和POST方法获取html数据。
使用GET方式:
- /**
- * 使用get方式获取html数据
- *
- * @param strURL(需要访问的网站)
- * @return
- * @throws Exception
- */
- public String getHTML(String strURL) throws Exception {
- //创建浏览器
- HttpClient httpClient = HttpClients.createDefault();
- String html = null;
- //预防网址链接中包含特殊字符,将url转为uri
- URL url = new URL(strURL);
- URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(),
- url.getQuery(), null);
- //使用get方式
- HttpGet request = new HttpGet(uri);
- HttpResponse response;
- try {
- //连接网址获取返回的数据
- response = httpClient.execute(request);
- //将返回的数据按照gbk的方式编码
- html = EntityUtils.toString(response.getEntity(), "GBK");
- } catch (IOException e) {
- e.printStackTrace();
- }
- //断开连接
- request.abort();
- //返回网址所发挥的html数据
- return html;
- }
使用该方法便可以获取得到网站所发挥的html数据。
使用POST方式:
- /**
- * 使用post方式获取html数据
- *
- * @param libraryUrl(需要访问的网站)
- * @param params(需要传入的参数)
- * @return
- * @throws Exception
- */
- public String postHTML(String strURL, List<NameValuePair> params)
- throws Exception {
- //创建浏览器
- HttpClient httpClient = HttpClients.createDefault();
- String html = null;
- //预防网址链接中包含特殊字符,将url转为uri
- URL url = new URL(strURL);
- URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(),
- url.getQuery(), null);
- //使用POST方式
- HttpPost request = new HttpPost(uri);
- //将参数封装进UrlEncodedFormEntity中
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
- request.setEntity(entity);
- HttpResponse response;
- try {
- //连接网址获取返回的数据
- response = httpClient.execute(request);
- //将返回的数据按照gbk的方式编码
- html = EntityUtils.toString(response.getEntity(), "GBK");
- } catch (IOException e) {
- e.printStackTrace();
- }
- //断开连接
- request.abort();
- //返回网址所发挥的html数据
- return html;
- }
其中,参数params的封装可以参照以下方式:
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- //以键值对的方式存储
- params.add(new BasicNameValuePair("format", "hitcount"));
使用GET与POST方式获取html数据的更多相关文章
- Http方式获取网络数据
通过以下代码可以根据网址获取网页的html数据,安卓中获取网络数据的时候会用到,而且会用Java中的sax方式解析获取到数据.(sax解析主要是解析xml)具体代码如下: package com.wy ...
- 基于uFUN开发板的心率计(一)DMA方式获取传感器数据
前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...
- IOS开发之Post 方式获取服务器数据
//1.创建post方式的 参数字符串url +(NSString *)createPostURL:(NSMutableDictionary *)params { NSString *postStri ...
- [NSURLSession/Delegate]用Post方式获取网络数据并把数据显示到表格
#pragma mark 实现NSURLSessionDataDelegate代理 @interface ViewController ()<UITableViewDataSource,UITa ...
- [NSURLConnection]分别用Post和Get方式获取网络数据并把数据显示到表格
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate> { UIButton* getButton; ...
- 用 get 同步/异步 方式获取网络数据并输出
//同步请求 //创建NSString用来存储请求的网址 NSString* str=@"http://v.juhe.cn/weather/index?format=2&cityna ...
- jQuery AJAX获取JSON数据解析多种方式示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- J2EE Web开发入门—通过action是以传统方式返回JSON数据
关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...
- android—获取网络数据
取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子. 大家都知道,网络通信,发送请求有两种 ...
随机推荐
- Selenium 多窗口切换
我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...
- C# 异步编程,async与await的简单学习
前提声明:C# 5.0 .NET Framework 4.5 2012-08-15 异步和等待(async和await).调用方信息(Caller Information) (C#版本与.NET版本 ...
- 二次封装axios,根据参数来实现多个请求多次拦截
1. 新建 axiosTool.js 文件,设置请求拦截和处理的逻辑 import Vue from 'vue' import axios from 'axios' //取消请求 let Cancel ...
- python之设计模式的装饰器9步学习
在继承的基础上增加新功能,重载,重写区别 装饰器: 函数a说,我是装饰器啊,其他哪个函数顶着我,我就吃了谁,然后吐出来我的和你的返回结果 testng的UI自动化,@beforetest,@befor ...
- (转)WebRTC信令控制与STUN/TURN服务器搭建
转:https://rtcdeveloper.com/t/topic/13742 本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了 ...
- leetcode-easy-array-31 three sum
mycode 69.20% class Solution(object): def removeDuplicates(self, nums): """ :type nu ...
- ubuntu 18.04更换源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak //备份 sudo vim /etc/apt/sources.list //修改 ##阿 ...
- 【flask_sqlalchemy】动态CURD类
环境: flask_sqlalchemy mysql from app import db class Curd(object): def __init__(self,modelName): self ...
- day68—angularJS学习笔记之-过滤器
转行学开发,代码100天——2018-05-23 今天学习angularJS的过滤器的使用. angular中的常用过滤器用来修改数据格式,主要有以下几类: 1.大写,| uppercase 2.小写 ...
- $.ajax函数调接口,报异常No converter found for return value of type: class java.util.ArrayList
接口正常执行,返回给前端后报服务器500异常,异常详情: org.springframework.http.converter.HttpMessageNotWritableException: No ...