java网页解析包_java 网页解析工具包 Jsoup

Jsoup是一个非常好的解析网页的包,用java开发的,提供了类似DOM,CSS选择器的方式来查找和提取文档中的内容。

相关资料如下:

今天做了一个Jsoup解析网站的项目,使用Jsoup.connect(url).get()连接某网站时偶尔会出现

java.net.SocketTimeoutException:Read timed out异常。

原因是默认的Socket的延时比较短,而有些网站的响应速度比较慢,

所以会发生超时的情况。

解决方法:

链接的时候设定超时时间即可。

doc = Jsoup.connect(url).timeout(5000).get();

5000表示延时时间设置为5s。

测试代码如下:

1,不设定timeout时:

package jsoupTest;

import java.io.IOException;

import org.jsoup.*;

import org.jsoup.helper.Validate;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

public class JsoupTest {

public static void main(String[] args) throws IOException{

String url = "http://www.weather.com.cn/weather/101010400.shtml";

long start = System.currentTimeMillis();

Document doc=null;

try{

doc = Jsoup.connect(url).get();

}

catch(Exception e){

e.printStackTrace();

}

finally{

System.out.println("Time is:"+(System.currentTimeMillis()-start) + "ms");

}

Elements elem = doc.getElementsByTag("Title");

System.out.println("Title is:" +elem.text());

}

}

有时发生超时:

java.net.SocketTimeoutException: Read timed out

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(Unknown Source)

at java.net.SocketInputStream.read(Unknown Source)

at java.io.BufferedInputStream.fill(Unknown Source)

at java.io.BufferedInputStream.read1(Unknown Source)

at java.io.BufferedInputStream.read(Unknown Source)

at sun.net.www.http.ChunkedInputStream.fastRead(Unknown Source)

at sun.net.www.http.ChunkedInputStream.read(Unknown Source)

at java.io.FilterInputStream.read(Unknown Source)

at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)

at java.util.zip.InflaterInputStream.fill(Unknown Source)

at java.util.zip.InflaterInputStream.read(Unknown Source)

at java.util.zip.GZIPInputStream.read(Unknown Source)

at java.io.BufferedInputStream.read1(Unknown Source)

at java.io.BufferedInputStream.read(Unknown Source)

at java.io.FilterInputStream.read(Unknown Source)

at org.jsoup.helper.DataUtil.readToByteBuffer(DataUtil.java:113)

at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:447)

at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393)

at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159)

at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148)

at jsoupTest.JsoupTest.main(JsoupTest.java:17)

Time is:3885ms

Exception in thread "main" java.lang.NullPointerException

at jsoupTest.JsoupTest.main(JsoupTest.java:25)

2,设定了则一般不会超时

package jsoupTest;

import java.io.IOException;

import org.jsoup.*;

import org.jsoup.helper.Validate;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

public class JsoupTest {

public static void main(String[] args) throws IOException{

String url = "http://www.weather.com.cn/weather/101010400.shtml";

long start = System.currentTimeMillis();

Document doc=null;

try{

doc = Jsoup.connect(url).timeout(5000).get();

}

catch(Exception e){

e.printStackTrace();

}

finally{

System.out.println("Time is:"+(System.currentTimeMillis()-start) + "ms");

}

Elements elem = doc.getElementsByTag("Title");

System.out.println("Title is:" +elem.text());

}

}

输出为:

Time is:4158ms Title is:顺义天气预报-今日_明日_一周天气预报:16日星期五  多云转晴  11/-4℃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++/CLI思辨录之传递托管堆地址

新的C特点平衡了把托管堆的地址传递到非托管代码的能力。早期我们遇到的最大问题是,在托管堆中的对象的位置是非静态的。垃圾收集器以变化的时间间隔移动对象。现在新的pin_ptr(别针型指针)的引入禁止垃圾收集器改变在堆上的对象的地址。下面代码展示了别针型指针的…

【Mininet】Mininet使用源码安装

实验参考: Mininet使用源码安装 实验步骤: 1. 更新软件(用#sudo apt-get update与#sudo apt-get upgrade)。 2. 从github上获取mininet源码(#git clone git://github.com/mininet/mininet)。 3. 获取完后&a…

java比较字符能用等于号码_Java字符串比较,==,等于,匹配,compareTo()之间的差异。...

的equals()方法将此字符串与指定的对象进行比较。当且仅当参数不为null并且是一个String对象,表示与此对象相同的字符序列时,结果为true。示例public class Sample{public static void main(String []args){String s1 "nhooo";String s2 &qu…

[SQL Server]用于压力测试和性能分析的两个支持实用工具[转]

微软有两个不提供支持服务的SQL Server压力测试和性能分析工具。具体看微软知识库:http://support.microsoft.com/?kbid887057 分别是:Read80Trace utility 和 OSTRESS utility 它们的下载地址请参看: http://www.microsoft.com/downloads…

【Mininet】Mininet可视化应用

实验参考: Mininet可视化应用 实验步骤: 1. 用命令启动mininet可视化界面(#cd mininet/mininet/example #./miniedit.py),同时开启另一终端打开Opendaylight。 2. 用鼠标选择左侧的对应的网络组件,然后在空…

java 队列复制_复制一个文件夹里的文件到另一个目录下 (使用队列的方法实现)...

最近在由于准备实习,在学android,也会用到Java,所以想实现复制文件夹的功能,当然也参考了别人的代码。这里是我参考的网址:http://blog.csdn.net/etzmico/article/details/7786525/我发这个文章的主要目的是为了永久性…

【Mininet】Mininet命令延伸实验扩展

实验参考: Mininet命令延伸实验扩展 实验步骤: 1.用命令实现 #sudo mn --topo minimal #最小的网络拓扑,一个交换机下挂两个主机。 #sudo mn --topo linear,4 #每个交换机连接一个主机,交换机间相连接。本例:4个主机&a…

asp.net里导出excel表方法汇总

1、由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) { HttpResponse resp; resp Page.Response; resp.ContentEncoding System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Disposition", &quo…

java非检查性异常有哪些_Java异常处理-检查性异常、非检查性异常、Error

一、Java异常处理详解异常.png目录:1.java中异常的分类1.1 异常(Exception)1.1.1 运行时异常(RuntimeException)可以不需要捕获1.1.2 编译异常(IOException)编译器会提示要捕获,如果不进行捕获则编译器会报错1.2 错误(Error)3.java处理异常机制4.throw和…

【Mininet】基于Mininet测量路径的损耗率

实验参考: 基于Mininet测量路径的损耗率 SDN常用控制器安装部署之POX篇 实验步骤: 1. 在装有mininet的虚拟机中新建文件mymininet.py并编辑以下内容,这里要注意一点,文中的dp0与dp1须填POX安装的虚拟机的地址,由于本次…

HTML 标记一览

标记 类型 名称或意义 作用 备注文件标记<HTML> ● 文件宣告 让浏览器知道这是 HTML 文件 <HEAD> ● 开头 提供文件整体信息 <TITLE> ● 标题 定义文件标题&#xff0c;将显示于浏览器顶端 <BODY> ● 主体 设计文件格式及内容所在 排版标记<!--注解…

【Mininet】Mininet设置带宽之简单性能测试

实验参考&#xff1a; Mininet设置带宽之简单性能测试 实验步骤&#xff1a; 1. 进入mininet/custom目录下&#xff0c;通过vi mymininet1.py创建脚本并添加内容&#xff08;本实验通过python脚本自定义拓扑&#xff0c;创建包含一个交换机、四个主机的网络拓扑&#xff09;&am…

java 配置tocat_Tomcat安装配置及Eclipse配置详解

整个安装过程我们先学习安装jdk和配置然后是安装tomcat和配置&#xff0c;最后我们学习安装eclipse和配置以及web程序的使用和发布举例1. 安装jdk和配置(1)下载jdk安装包&#xff1a;(2)按照步骤点击下一步进行jdk软件的安装。(3)配置javajdk的环境变量**配置环境变量包括java_…

[CityLife]“背后的故事”---贫嘴曾志伟

受伤后&#xff0c;很久不曾看电视了&#xff0c;最晚打开电视机看了湖南卫视的一档节目: “背后的故事”---贫嘴曾志伟的幸福生活(上&#xff09;他个子矮小&#xff0c;却快乐豁达。父有名而不以父为名。有女&#xff0c;女娇却是 父以女骄。他讲自己曾经5块钱过了2周&#x…

【Mininet】Mininet动态改变转发规则实验

实验参考&#xff1a; Mininet动态改变转发规则实验 SDN常用控制器安装部署之POX篇 实验步骤&#xff1a; 1. 在装有POX的虚拟机里&#xff0c;/root/pox目录下新建文件lab_controller.py&#xff0c;并编辑以下内容&#xff1a; 1 from pox.core import core2 3 import pox.o…

FreeBASIC

最近有个国外的客户来信问我们的产品是否支持FreeBASIC。上去看了一下&#xff0c;是个QuickBASIC仿制品&#xff0c;支持DOS、Windows、Linux。运行了一下&#xff0c;感觉挺简单的&#xff0c;可以最大限度地兼容QB&#xff0c;在兼容性上比其他用过的BASIC要好。其实类似的B…

php搜索图片不显示不出来了,PHP CURL采集百度搜寻结果图片不显示问题的解决方法【第1/4页】...

1.根据关键字采集百度搜寻结果根据关键字采集百度搜寻结果&#xff0c;可以使用curl实现&#xff0c;代码如下&#xff1a;<?php function doCurl($url, $dataarray(), $headerarray(), $timeout30){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch…

数据库,XML,MDB --- 我们来TXT...

数据库,XML,MDB --- 我们来TXT... 转贴请注明来自http://blog.csdn.net/a11s 作者:董含君 blog已经迁移到http://a11s.cnblogs.com呵呵,有数据库当然用数据库,SQL Server多好用, mySQL多好用... 不能给客户端随便装服务啊,那就access或者其他单机的xsl之类,或者干脆XML XML是…

React+umi+antdesign实现上传文件组件(阿里云)

开始之前需要封装一个上传的方法fileUtils.ts import { message } from antd; import Base64 from crypto-js/enc-base64; import Utf8 from crypto-js/enc-utf8; import HmacSHA1 from crypto-js/hmac-sha1; import { request } from umi;const isDev process.env.NODE_ENV …

php文件怎么设置隐藏显示代码,php文件隐藏的方法

php文件隐藏的方法&#xff1a;1、在“httpd.conf”里任意位置添加代码为“AddType application/x-httpd-php .asp .py .pl .jsp aspx”&#xff1b;2、对PHP使用未知扩展名。隐藏你的.php文件今天做PHP在线手册镜像的时候看到了这个方法,哈哈,以前都没有注意到,所以说,手册是最…