【发布时间】:2014-08-30 19:35:27
【问题描述】:
我正在尝试使用 Jsoup 处理几个 url。一个这样的例子是:
http://www.aceshowbiz.com/movie/
当我这样做时:
Document doc = Jsoup.connect(url).get();
它抛出
Exception in thread "main" java.net.SocketTimeoutException: Read timed out
但是当我设置一个用户代理字符串时,它工作正常
Document doc = Jsoup.connect(url).userAgent("Chrome").get();
虽然它不适用于其他 UserAgent 字符串:
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
我在这里的查询是:当网站允许某个用户代理字符串并且某些网站仅在根本不使用用户代理字符串时下载时,这种情况经常发生在我身上。我不确定是什么导致了这种行为。什么是解决这个问题。正如我所说,在某些网站上,我只能在完全不使用用户代理字符串的情况下下载。是服务器端的某种限制吗?或者如果一个网站没有用我的爬虫的用户代理字符串下载,我应该尊重它,不应该尝试更多的案例,或者它是某种错误。当然不确定为什么网站不允许某些用户代理字符串/根本不使用用户代理字符串时很少下载。
我也在http://www.bloombergview.com/topics/entertainment 上测试了几个用户代理字符串,发现它只在少数几个上被下载。我们如何确定它的工作原理?
如果是 Jsoup 的问题,我应该尝试使用 http 手动下载页面并提供 Jsoup.parse(html) 吗?不确定那里也会遇到同样的问题。
编辑:我希望我能够传达问题:-> 如何为能够下载所有站点的爬虫选择正确的用户代理字符串。我肯定会将我的爬虫名称添加到 useragent 字符串中(如果此信息很重要),但我现在遇到了上面可用的通用字符串的问题。不确定上述情况会发生什么。
【问题讨论】:
-
我尝试使用您发布的用户代理,它可以工作。
-
感谢您的评论。 aceshowbiz 似乎不能与“chrome”以外的任何东西一起使用,而bloomberg 与上面发布的长用户代理字符串一起使用。需要了解正在发生的事情以及为什么站点使用很少的用户代理字符串而很少使用不起作用。和解决方法。
-
你航行
I tested few useragent strings on http://www.bloombergview.com/topics/entertainment as well and found it gets download **only** when using **no useragent** string. -
如果不是这样,请更新您的问题。
-
关于这个
I tested few useragent strings on http://www.bloombergview.com/topics/entertainment as well and found it gets downloaded only on few. How can we decide on which it works ?请发布有问题的用户代理之一。
标签: java jsoup web-crawler user-agent