我试着用Jsoup开发几个urls。其中一个例子是:
http://www.aceshowbiz.com/movie/
当我这么做时:
Document doc = Jsoup.connect(url).get();它抛出
Exception in thread "main" java.net.SocketTimeoutException: Read timed out但是,当我设置一个useragent字符串时,它可以正常工作。
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我在这里的疑问是:当一个网站允许一个特定的useragent字符串,而有些站点只在没有使用useragent字符串时才下载,这种情况在我身上经常发生。我不知道是什么导致了这种行为。这其中的作用是什么。正如我所说,在一些网站上,我只能在不使用useragent字符串的情况下下载。这是服务器端的某种限制吗?或者,如果一个网站没有下载我的爬虫的用户代理字符串,我应该尊重它,不应该尝试更多的情况,或者是某种错误。当然,不知道为什么站点不允许某些useragent字符串/并且很少会在没有使用useragent字符串的情况下被下载。
我也在http://www.bloombergview.com/topics/entertainment上测试了很少的useragent字符串,发现它只能在很少的几个上下载。我们如何才能决定它的作用呢?
如果这是Jsoup的问题,我是否应该尝试使用http手工下载页面并将其添加到Jsoup.parse(html)?也不确定也会遇到同样的问题。
编辑:我希望我能传达问题:->如何为我的爬虫选择一个正确的用户代理字符串,可以下载所有网站。我肯定会将我的爬虫名添加到useragent字符串中(如果这个信息很重要的话),但是我现在遇到了像上面这样的通用字符串的问题。不确定在上述情况下发生了什么。
发布于 2014-08-30 20:52:50
关于阿奇豪比兹,问题不在于userAgent,而在于超时选项。尝尝这个
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) --这消除了超时限制。你可以加一些很大的数字,这在性能上还是可以接受的
https://stackoverflow.com/questions/25586050
复制相似问题