Code Bye

Jsoup 解析网页报异常

我采用的是多线程解析网页信息,当解析一定时间之后
就会报
Connection reset或者read time out错误,
我的代码是
Document doc = Jsoup.connect(url).timeout(3000).userAgent(“Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0”)).get();

异常是
java.net.SocketException: Connection reset
请高手帮我分析分析
应该如何解决

求各位大神帮们
回帖就送分!

2分
.timeout(3000)去掉
引用 2 楼 fangmingshijie 的回复:

.timeout(3000)去掉

不行啊
去掉之后运行还是会报
java.net.SocketTimeoutException: Read timed out


4分
不是什么网站你都能连接的 有些网站的反爬虫做得好 不让你用代码这么连

4分
估计应该是你多线程没写好!
先跑单线程试试!
引用 5 楼 longtian1213 的回复:

估计应该是你多线程没写好!
先跑单线程试试!

如果在超时的时候 在catch里边让线程暂停几秒钟 之后再联接的话,超时的次数就能少点,但是当所有的线程运行的时间长点的情况,还是会一直报异常。
老板要求用多线程 因为数据量太大,如果用单线程的话 运行时间就有点太长了

引用 4 楼 zyrobert 的回复:

不是什么网站你都能连接的 有些网站的反爬虫做得好 不让你用代码这么连

那怎么能看出来哪个网站让爬 哪个网站不让爬呢?
有些画面我在解析的时候报302 是不是就意味着不让爬呢?


2分
引用 7 楼 cuiyang_0227 的回复:
Quote: 引用 4 楼 zyrobert 的回复:

不是什么网站你都能连接的 有些网站的反爬虫做得好 不让你用代码这么连

那怎么能看出来哪个网站让爬 哪个网站不让爬呢?
有些画面我在解析的时候报302 是不是就意味着不让爬呢?

302是重定向


2分
引用 7 楼 cuiyang_0227 的回复:
Quote: 引用 4 楼 zyrobert 的回复:

不是什么网站你都能连接的 有些网站的反爬虫做得好 不让你用代码这么连

那怎么能看出来哪个网站让爬 哪个网站不让爬呢?
有些画面我在解析的时候报302 是不是就意味着不让爬呢?

你需要从重定向的header里去获取location的新地址

引用 9 楼 sd4000784 的回复:
Quote: 引用 7 楼 cuiyang_0227 的回复:
Quote: 引用 4 楼 zyrobert 的回复:

不是什么网站你都能连接的 有些网站的反爬虫做得好 不让你用代码这么连

那怎么能看出来哪个网站让爬 哪个网站不让爬呢?
有些画面我在解析的时候报302 是不是就意味着不让爬呢?

你需要从重定向的header里去获取location的新地址

我调查了 这个在基类里已经处理过,如果出现302的问题 会获取location的新地址,但是还是会报302的问题。


2分
11.避免URL重定向。URL redirects are made using HTTP status codes 301 and 302. They tell the browser to go to another location.

2分
setTimeOut时间长一点

2分
还是用httpclient 然后在用jsoup解析吧
引用 12 楼 jacal1 的回复:

setTimeOut时间长一点

有段时间没做那个项目了,记得当时最后是把settimeout设置大了些之后,能好一点点,不过在多次解析的时候,还是时不时会出现问题。

Document doc=null;
org.jsoup.Connection conn = Jsoup.connect(url);
conn.timeout(5000);
doc = conn.get();

设置一下


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Jsoup 解析网页报异常