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. cp: cannot stat: filepath Permission denied

    在执行 cp -r frompath topath时,报错cp: cannot stat: frompath Permission denied. 百度,google都没有找到解决方案,无意中发现,原 ...

  2. Spring Boot注解与资源文件配置

    date: 2018-11-18 16:57:17 updated: 2018-11-18 16:57:17 1.不需要多余的配置文件信息 application.properties mybatis ...

  3. 细说React生命周期

    目录 新旧版本生命周期图对比 16.3之前的版本 16.3之后的版本 生命周期的几个阶段 挂载 constructor conpomentWillMount(v17将移除) getDerivedSta ...

  4. 蒲公英 · JELLY技术周刊 Vol.28: Next.js 10 发布

    蒲公英 · JELLY技术周刊 Vol.28 前端应用到底该选 SSR 还是 CSR?每个项目技术栈决策的时候都会根据实际需求有自己的看法,而在不久前 React 17 发布之后,自然而然也会有同学好 ...

  5. C++在C的基础上改进了哪些细节

    C++ 是在C语言的基础上改进的,C语言的很多语法在 C++ 中依然广泛使用,例如:  C++ 仍然使用 char.short.int.long.float.double 等基本数据类型:   ...

  6. JS--遍历对象属性的五种方式

    ES6 一共有 5 种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性). (2)Object.keys(obj) Ob ...

  7. Go读取论文并转换为simhahs

    package main import ( "fmt" _"flag" _ "os" _ "io/ioutil" _&q ...

  8. tensorflow的广播机制

    TensorFlow支持广播机制(Broadcast) TensorFlow支持广播机制(Broadcast),可以广播元素间操作(elementwise operations).正常情况下,当你想要 ...

  9. layui下拉框实现级联

    <!DOCTYPE html><html><head> <meta charset="utf-8" /> <link href ...

  10. .NET操作Excel

    一.读取Excel数据,并显示 1.配置文件 <configuration> <system.web> <compilation debug="true&quo ...