1、方案选择:

  1.1、HttpClient库 获取 原始的 json数据

  1.2、JSON库 取得 我们需要的HTML内容

  1.3、使用 jsoup 解析 我们取得的HTML内容

2、不直接使用 jsoup,原因:

  2.1、它会自动补全 HTML的头和尾(<html/><body/>等),jsoup中没有这个

    处理方法:手动指定 Parser.xmlParser()

  2.2、如果属性 没有用 2个双引号包裹起来,它会将 这2个双引号补全... 这个功能 在jsoup里面没法关闭...

3、示例代码:

  3.1、工具类

package z_utils;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils; public class TzHttpClient
{
public static void main(String[] args) throws Exception
{
String strRtn = PostZ(
"http://ajax.mianbao99.com/vod-showlist-id-8-order-time-c-3719-p-2.html",
null,
true);
System.out.println(strRtn);
} // *** @SuppressWarnings("deprecation")
public static String PostZ(String _strUrl, String _strParam, boolean _bNeedResponse) throws Exception
{
//post请求返回结果
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(_strUrl);
if (null != _strParam)
{
//解决中文乱码问题
StringEntity entity = new StringEntity(_strParam, "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
}
HttpResponse result = httpClient.execute(method);
/**请求发送成功,并得到响应**/
if (result.getStatusLine().getStatusCode() == 200)
{
if (! _bNeedResponse)
return null;
String str = EntityUtils.toString(result.getEntity());
//System.out.println(str);
return str;
}
return null;
} @SuppressWarnings("deprecation")
public static String GetZ(String _strUrl) throws Exception
{
DefaultHttpClient client = new DefaultHttpClient();
//发送get请求
HttpGet request = new HttpGet(_strUrl);
HttpResponse response = client.execute(request); /**请求发送成功,并得到响应**/
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
/**读取服务器返回过来的json字符串数据**/
String strResult = EntityUtils.toString(response.getEntity());
//System.out.println(strResult);
return strResult;
}
System.out.println("get请求提交失败:" + _strUrl);
return null;
}
}

  3.2、测试 功能代码

package test;

import org.jsoup.Connection;
///import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.*;
import org.jsoup.parser.Parser; import net.sf.json.*;
import z_utils.TzHttpClient; public class Ttest01
{
public static void main(String[] args) throws Exception
{
String strHtml = TzHttpClient.GetZ("http://ajax.mianbao99.com/vod-showlist-id-8-order-time-c-3719-p-2.html");
JSONObject jsoupObj = JSONObject.fromObject(strHtml);
if (! jsoupObj.containsKey("ajaxtxt"))
return; // Connection conn = null;
// conn.parser(Parser.xmlParser());
String strAjaxtxt = jsoupObj.getString("ajaxtxt");
Document doc = Jsoup.parse(strAjaxtxt, "", Parser.xmlParser());
System.out.println(doc.html());
} }

4、

抓jsoup_01_方案代码的更多相关文章

  1. '/test.txt'; // 把抓取的代码写入该文件

      将获得的代码直接写入某个文件 代码如下:<?php $urls = array( 'http://www.sina.com.cn/', 'http://www.sohu.com/', 'ht ...

  2. 基于angularJs的单页面应用seo优化及可抓取方案原理分析

    公司使用angularJs(以下都是指ng1)框架做了互联网应用,之前没接触过seo,突然一天运营那边传来任务:要给网站做搜索引擎优化,需要研发支持.搜了下发现单页面应用做seo比较费劲,国内相关实践 ...

  3. jquery抓娃娃机代码

    <html><head><title>jQuery抓娃娃机游戏代码 - 源码之家</title><meta name="content- ...

  4. 阿里天池 NLP 入门赛 TextCNN 方案代码详细注释和流程讲解

    thumbnail: https://image.zhangxiann.com/jung-ho-park-HbnqEhMBpPM-unsplash.jpg toc: true date: 2020/8 ...

  5. 用jstack自动化捕抓异常java代码脚本

    #!/bin/bashdate=` date +%y%m%d-%H%M`pid=`top -bn1 |grep java | awk '{print $1 "\t" $9}' |h ...

  6. 用流从一个指定的网址抓取html代码

    package cn.bdqn.collect.test; import java.io.BufferedReader; import java.io.InputStream; import java ...

  7. MFC WinInetHttp抓取网页代码内容

    Windows Internet编程主要包括两方面: l  服务器端   l  客户端 WinInet编程 Internet客户端主要实现的功能,主要是通过Internet协议(HTTP.FTP等)获 ...

  8. Java抓屏程序代码

    原文:http://www.open-open.com/code/view/1422262655200 import java.awt.Dimension; import java.awt.Recta ...

  9. EasyPlayerPro RTMP播放器助力远程娃娃机直播抓娃娃技术方案

    远程娃娃机 目前市面上娃娃机的方案有很多种.核心的技术流程就是实现远程直播加上对娃娃机手臂的远程操作.其中最主要的技术还是视频直播方案,需要低延时,视频秒开等流媒体技术. 最简单的直播方案 视频直播方 ...

随机推荐

  1. selenium调用Firefox和Chrome需要注意的一些问题,和出现的报错selenium:expected [object undefined] undefined to be a string

    在高版本selenium下如:selenium3.4.3 1.高版本的selenium需要浏览器安装一些补丁驱动 Firefox:geckodriver 下载网址:http://download.cs ...

  2. orchestrator-Raft集群部署

    本文简要说明下orchestrator的Raft集群部署,其实部署很简单主要是好好研究下配置文件的配置,这里我的样例配置文件暂时只适用于我们这块业务 如果您自己使用请根据情况自行修改. 主要通过配置文 ...

  3. Storm-源码分析- spout (backtype.storm.spout)

    1. ISpout接口 ISpout作为实现spout的核心interface, spout负责feeding message, 并且track这些message. 如果需要Spout track发出 ...

  4. slurm使用

    官方文档:https://slurm.schedmd.com/ 用户命令cheatsheet:https://slurm.schedmd.com/pdfs/summary.pdf 占用GPU sall ...

  5. elastic search远程测试

    elastic search远程测试 推荐:elastic官方教程:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/index. ...

  6. Linux network 资料链接

    1.iptables 基础 https://wiki.centos.org/HowTos/Network/IPTables 2.HOWTOs on netfilter site http://www. ...

  7. linux c编程:Posix信号量

    POSIX信号量接口,意在解决XSI信号量接口的几个不足之处: POSIX信号量接口相比于XSI信号量接口,允许更高性能的实现. POSIX信号量接口简单易用:没有信号量集,其中一些接口模仿了我们熟悉 ...

  8. java 多线程 day06 threadLocal

    import java.util.HashMap;import java.util.Map;import java.util.Random; /** * Created by chengtao on ...

  9. 在Centos上打Preempt-rt实时补丁

    1.系统centos6.5,内核2.6.31.6,补丁patch-2.6.31.6-rt19.bz2,以下方式获得: wget https://www.kernel.org/pub/linux/ker ...

  10. BCB直接访问硬件端口和物理内存 - WinIO的应用

    BCB直接访问硬件端口和物理内存 - WinIO的应用 (读硬盘参数和主板BIOS信息, 支持 Win9x/NT/2k/XP/2003) 关于直接访问端口, 有很多网站很多文章都讨论过, 但总找不到非 ...