首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取超时取决于UserAgent字符串

读取超时取决于UserAgent字符串
EN

Stack Overflow用户
提问于 2014-08-30 19:35:27
回答 1查看 1.9K关注 0票数 0

我试着用Jsoup开发几个urls。其中一个例子是:

http://www.aceshowbiz.com/movie/

当我这么做时:

代码语言:javascript
复制
Document doc = Jsoup.connect(url).get();

它抛出

代码语言:javascript
复制
Exception in thread "main" java.net.SocketTimeoutException: Read timed out

但是,当我设置一个useragent字符串时,它可以正常工作。

代码语言:javascript
复制
Document doc = Jsoup.connect(url).userAgent("Chrome").get();

尽管它不适用于其他UserAgent字符串:

代码语言:javascript
复制
Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").get();
//again a Read Time Out

我在这里的疑问是:当一个网站允许一个特定的useragent字符串,而有些站点只在没有使用useragent字符串时才下载,这种情况在我身上经常发生。我不知道是什么导致了这种行为。这其中的作用是什么。正如我所说,在一些网站上,我只能在不使用useragent字符串的情况下下载。这是服务器端的某种限制吗?或者,如果一个网站没有下载我的爬虫的用户代理字符串,我应该尊重它,不应该尝试更多的情况,或者是某种错误。当然,不知道为什么站点不允许某些useragent字符串/并且很少会在没有使用useragent字符串的情况下被下载。

我也在http://www.bloombergview.com/topics/entertainment上测试了很少的useragent字符串,发现它只能在很少的几个上下载。我们如何才能决定它的作用呢?

如果这是Jsoup的问题,我是否应该尝试使用http手工下载页面并将其添加到Jsoup.parse(html)?也不确定也会遇到同样的问题。

编辑:我希望我能传达问题:->如何为我的爬虫选择一个正确的用户代理字符串,可以下载所有网站。我肯定会将我的爬虫名添加到useragent字符串中(如果这个信息很重要的话),但是我现在遇到了像上面这样的通用字符串的问题。不确定在上述情况下发生了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-30 20:52:50

关于阿奇豪比兹,问题不在于userAgent,而在于超时选项。尝尝这个

代码语言:javascript
复制
Document doc = Jsoup.connect("http://www.aceshowbiz.com/movie/")
                    .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                  //.userAgent("Chrome")
                    .timeout(0)  
                    .get();

我希望看到一个userAgent工作的例子和另一个不能工作的例子。你有吗?

timeout(0) --这消除了超时限制。你可以加一些很大的数字,这在性能上还是可以接受的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25586050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档