Jsoup获取网页内容(并且解决中文乱码问题)
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获取网页内容(并且解决中文乱码问题)的更多相关文章
- 纯JS设置首页,增加收藏,获取URL參数,解决中文乱码
雪影工作室版权全部,转载请注明[http://blog.csdn.net/lina791211] 1.前言 纯Javascript 设置首页,增加收藏. 2.设置首页 // 设置为主页 functio ...
- JS获取url多个参数及解决中文乱码问题
function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&am ...
- Python3.x:BeautifulSoup()解决中文乱码问题
Python3.x:BeautifulSoup()解决中文乱码问题 问题: BeautifulSoup获取网页内容,中文显示乱码: 解决方案: 遇到情况也是比较奇葩,利用chardet获取网页编码,然 ...
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
这里先写几个大家容易搞混的编码设置代码: 在jsp代码中的头部往往有这两行代码 pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码J ...
- Android--字符串和16进制相互转化(解决中文乱码)
import java.io.ByteArrayOutputStream; /** * Created by Administrator on 2016/2/2. * -----------16进制和 ...
- jquery插件导出excel和pdf(解决中文乱码问题)
参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...
- HttpServletRequest解决中文乱码的问题
HTTP请求有get和post,这两中方式解决中文乱码的方式如下: 1.Post方式请求 //这句话是设置post请求体的编码为utf-8 request.setCharacterEncoding(& ...
- java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)
转载地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...
- Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码
先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...
随机推荐
- eclipse安装报错
例如这样 原因是被墙了 个人搭**后完美解决
- day03 爬虫基础
一.爬虫原理1.互联网:由一堆网络设备把一台台计算机互联到一起称之为互联网2.互联网建立的目的:传递与共享数据3.上网的全过程普通用户: 打开浏览器---->往目标站点发送请求---->获 ...
- CTF:sctf_2019_easy_heap
这个题目当时比赛的时候靶机据说是ubuntu16.04,但是迁移到buu上就变成了ubuntu18.04,下面针对两个平台给出不同的解法,先写一下18.04下的 先来逆一下,关键点有一下几个 mmap ...
- D. Alyona and Strings 解析(思維、DP)
Codeforce 682 D. Alyona and Strings 解析(思維.DP) 今天我們來看看CF682D 題目連結 題目 略,請直接看原題. 前言 a @copyright petjel ...
- D. Equalize the Remainders 解析(思維)
Codeforce 999 D. Equalize the Remainders 解析(思維) 今天我們來看看CF999D 題目連結 題目 略,請直接看原題 前言 感覺要搞個類似\(stack\)的東 ...
- 硬核!15张图解Redis为什么这么快
作为一名服务端工程师,工作中你肯定和 Redis 打过交道.Redis 为什么快,这点想必你也知道,至少为了面试也做过准备.很多人知道 Redis 快仅仅因为它是基于内存实现的,对于其它原因倒是模棱两 ...
- vue自定义指令长按事件
Vue.directive('longpress', { bind: function (el, binding, vNode) { // Make sure expressi ...
- python装饰器是什么?
装饰器是python中的高阶语法,装饰器是通过类或者函数来实现的,通常使用@符号来表示一个装饰器,作用是用来扩展某个函数或者类的功能
- 关于maven下,lombok的安装
1.首先下载lombok的jar包,可至https://mvnrepository.com/下载 2.双击即会自动扫描eclipse.exe,如图: 选择eclipse.exe,点击install/u ...
- 【Kata Daily 190903】String incrementer(字符串增量器)
原题: Your job is to write a function which increments a string, to create a new string. If the string ...