抓jsoup_01_方案代码
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_方案代码的更多相关文章
- '/test.txt'; // 把抓取的代码写入该文件
将获得的代码直接写入某个文件 代码如下:<?php $urls = array( 'http://www.sina.com.cn/', 'http://www.sohu.com/', 'ht ...
- 基于angularJs的单页面应用seo优化及可抓取方案原理分析
公司使用angularJs(以下都是指ng1)框架做了互联网应用,之前没接触过seo,突然一天运营那边传来任务:要给网站做搜索引擎优化,需要研发支持.搜了下发现单页面应用做seo比较费劲,国内相关实践 ...
- jquery抓娃娃机代码
<html><head><title>jQuery抓娃娃机游戏代码 - 源码之家</title><meta name="content- ...
- 阿里天池 NLP 入门赛 TextCNN 方案代码详细注释和流程讲解
thumbnail: https://image.zhangxiann.com/jung-ho-park-HbnqEhMBpPM-unsplash.jpg toc: true date: 2020/8 ...
- 用jstack自动化捕抓异常java代码脚本
#!/bin/bashdate=` date +%y%m%d-%H%M`pid=`top -bn1 |grep java | awk '{print $1 "\t" $9}' |h ...
- 用流从一个指定的网址抓取html代码
package cn.bdqn.collect.test; import java.io.BufferedReader; import java.io.InputStream; import java ...
- MFC WinInetHttp抓取网页代码内容
Windows Internet编程主要包括两方面: l 服务器端 l 客户端 WinInet编程 Internet客户端主要实现的功能,主要是通过Internet协议(HTTP.FTP等)获 ...
- Java抓屏程序代码
原文:http://www.open-open.com/code/view/1422262655200 import java.awt.Dimension; import java.awt.Recta ...
- EasyPlayerPro RTMP播放器助力远程娃娃机直播抓娃娃技术方案
远程娃娃机 目前市面上娃娃机的方案有很多种.核心的技术流程就是实现远程直播加上对娃娃机手臂的远程操作.其中最主要的技术还是视频直播方案,需要低延时,视频秒开等流媒体技术. 最简单的直播方案 视频直播方 ...
随机推荐
- 《JAVA多线程编程核心技术》 笔记:第六章:单例模式与多线程
一.立即加载/"饿汉模式"和延迟加载/"懒汉模式" 立即加载(又称饿汉模式):在使用类的时候已经将对象创建完毕,常见实现方法是直接new实例化 延迟加载(又称懒 ...
- 在DO搭建自己的ss
前期准备: 1.一个paypal账户 2.国外的一台VPS paypal的注册需要一个邮箱和一张信用卡即可. VPS的话经过搜索对比,决定使用DigitalOcean的.(点击此链接注册DO可获得10 ...
- Apache Tez Design
http://tez.incubator.apache.org/ http://dongxicheng.org/mapreduce-nextgen/apache-tez/ http://dongxic ...
- MyBatis generator 生成生成dao model mappper
MyBatis GeneratorXML配置文件参考 在最常见的用例中,MyBatis Generator(MBG)由XML配置文件驱动. 配置文件告诉MBG: 如何连接到数据库 什么对象要生成,以及 ...
- 服务器1M带宽同时能承受多少人在线
最近网站的流量一直在增长,这个肯定是好事.不过也有个麻烦的问题,目前本站用的的虚拟空间,每月流量30G,虽然95%的图片都已外链,但流量还是很吃紧,日均2000ip,4月份流量34g左右,单JS的响应 ...
- DRF(4) - 认证、权限组件
一.引入 通过前面三节课的学习,我们已经详细了解了DRF提供的几个重要的工具,DRF充分利用了面向对象编程的思想,对Django的View类进行了继承,并封装了其as_view方法和dispatch方 ...
- Linux运维工程师:30道面试题整理
1.linux 如何挂在 windows 下的共享目录 mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=1 ...
- R 基本函数总结
基本一.数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character:字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 len ...
- for迭代序列的三种方式
while循环是条件性的,for循环是迭代性的. for循环会访问所有迭代对象中的所有元素,并在所有条目都结束后结束循环. for循环迭代序列有三种基本的方式,分别是通过序列项迭代.通过索引迭代.通过 ...
- c#中类和成员的修饰符介绍
类访问修饰符: public 访问级别最高,公共访问没有限制. internal 只允许在本程序集内访问,其他程序集或站点引用其所在的程序集无法访问此类. 例如程序集LibraryA写有ClassA, ...