1. 根据连接地址获取网页内容,解决中文乱码页面内容,请求失败后尝试3次

private static Document getPageContent(String urlStr) {
for (int i = 1; i <= 3; i++) {
try {
URL url = new URL(urlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 默认就是Get,可以采用post,大小写都行,因为源码里都toUpperCase了。
connection.setRequestMethod("GET");
// 是否允许缓存,默认true。
connection.setUseCaches(Boolean.FALSE);
// 是否开启输出输入,如果是post使用true。默认是false
// connection.setDoOutput(Boolean.TRUE);
// connection.setDoInput(Boolean.TRUE);
// 设置请求头信息
connection.addRequestProperty("Connection", "close");
// 设置连接主机超时(单位:毫秒)
connection.setConnectTimeout(8000);
// 设置从主机读取数据超时(单位:毫秒)
connection.setReadTimeout(8000);
// 设置Cookie
// connection.addRequestProperty("Cookie", "你的Cookies");
// 开始请求
int index = urlStr.indexOf("://") + 3;
String baseUri = urlStr.substring(0, index) + url.getHost();
Document doc = Jsoup.parse(connection.getInputStream(), "GBK", baseUri);
if (doc != null) {
return doc;
}
Thread.sleep(3 * 1000);
continue;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

2. 解析网页数据,通过多种方式获取页面元素

    public static void main(String[] args) {
String urlStr = "http://test.cn/a.html";// 静态页面链接地址
Document doc = getPageContent(urlStr);
if (doc != null) {
// 1. 根据id查询元素
Element e1 = doc.getElementById("id");
// 2. 根据标签获取元素
Elements e2 = doc.getElementsByTag("p");
// 3. 根据class获取元素
Element e3 = doc.getElementsByClass("class_p").first();
// 4. 根据属性获取元素
Element e4 = doc.getElementsByAttributeValue("href", "http://test.cn").first();
// 5. 根据查询器获取元素(class 为writing的div下的p)
Elements e5 = doc.select("div.writing>p");
Elements es = doc.select("div .writing p");
if (es != null && es.size() > 0) {
for (Element p : es) {
String pStr = p.text().trim();
System.out.println(pStr);
}
}
}
}

Jsoup获取网页内容(并且解决中文乱码问题)的更多相关文章

  1. 纯JS设置首页,增加收藏,获取URL參数,解决中文乱码

    雪影工作室版权全部,转载请注明[http://blog.csdn.net/lina791211] 1.前言 纯Javascript 设置首页,增加收藏. 2.设置首页 // 设置为主页 functio ...

  2. JS获取url多个参数及解决中文乱码问题

    function GetQueryString(name) {      var reg = new RegExp("(^|&)"+ name +"=([^&am ...

  3. Python3.x:BeautifulSoup()解决中文乱码问题

    Python3.x:BeautifulSoup()解决中文乱码问题 问题: BeautifulSoup获取网页内容,中文显示乱码: 解决方案: 遇到情况也是比较奇葩,利用chardet获取网页编码,然 ...

  4. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    这里先写几个大家容易搞混的编码设置代码: 在jsp代码中的头部往往有这两行代码 pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码J ...

  5. Android--字符串和16进制相互转化(解决中文乱码)

    import java.io.ByteArrayOutputStream; /** * Created by Administrator on 2016/2/2. * -----------16进制和 ...

  6. jquery插件导出excel和pdf(解决中文乱码问题)

    参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...

  7. HttpServletRequest解决中文乱码的问题

    HTTP请求有get和post,这两中方式解决中文乱码的方式如下: 1.Post方式请求 //这句话是设置post请求体的编码为utf-8 request.setCharacterEncoding(& ...

  8. java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)

    转载地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  9. Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码

    先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...

随机推荐

  1. python中的多(liu)元(mang)交换 ,赋值

    多元赋值 顾名思义 同时对多个变量赋值 长话短说 举例: int x = 1 int y = 2 x,y = y ,x 这种写法可以直接交换x,y的值 非常方(liu)便(mang) 也就是 y=1 ...

  2. mysql-connector-java各种版本下载地址

    mysql-connector-java下载地址: http://mvnrepository.com/artifact/mysql/mysql-connector-java 目录 1.进去后选择自己的 ...

  3. D. Rescue Nibel! 解析(思維、組合、離散化、差分)

    Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...

  4. 【总结】rabbitmq

    一.rabbitmq基础 1.简介 RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的.Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟, ...

  5. 工业4G DTU是什么和普通DTU有什么不同

    4G DTU作为一种物联网远程数据传输设备,现今在世界范围内都有非常广泛的应用,根据应用场景的不同,对4G DTU设备支持的功能,硬件设施的要求都有不同,特别是在工业现场,对4G DTU设备的要求非常 ...

  6. Java学习的第三十八天

    例3.4. package bgio; public class cjava { public static void main(String[]args) { int i=1; int sum=0; ...

  7. @Transactional 注意事项、方法调用

    1.同一个类中,即A与B在同一类中,A()调用B()方法,A不加 @Transactional 事务注解,B加 @Transactional 事务注解,则B中的事务不起作用,A加事务,才会起作用,B中 ...

  8. [Luogu P3338] [ZJOI2014]力 (数论 FFT 卷积)

    题面 传送门: 洛咕 BZOJ Solution 写到脑壳疼,我好菜啊 我们来颓柿子吧 \(F_j=\sum_{i<j}\frac{q_i*q_j}{(i-j)^2}-\sum_{i>j} ...

  9. RabbitMQ的简单封装

    一般在工作中,都是直接使用已经封装好的mq的程序集进行功能开发.所以很多时候都没有去了解rabbitmq到底是如何封装(实现使用的).所以心血来潮,简单记录下自己对rabbitmq的简单封装 整体的思 ...

  10. Docker(2)- Centos 7.x 下安装 Docker

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 前言 虚拟机安装 centos ...