我正在嘗試使用Jsoup在幾個網址上工作。其中一個例子是:根據UserAgent字符串Jsoup讀取超時字符串
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
我在這裏的查詢是:此類案件發生了很多與我,當一個網站,允許一定的UserAgent字符串,一些網站只下載不使用時的UserAgent字符串。我不確定是什麼原因導致此類行爲。什麼是解決這個問題的方法。正如我所說的,在一些網站上,我只能在根本沒有使用任何字符串的情況下下載。這是服務器端的某種限制嗎?或者,如果一個網站沒有使用我的抓取工具的useragent字符串下載,我應該尊重它,不應該嘗試更多的案例,或者是某種錯誤。當然不確定爲什麼網站不允許某些useragent字符串/並且幾乎沒有使用任何useragent字符串時下載。
我也在http://www.bloombergview.com/topics/entertainment上測試了幾個useragent字符串,並發現它只能在很少的情況下下載。我們如何決定它的工作原理?
如果這是Jsoup的問題,我應該嘗試使用http下載頁面並提供它Jsoup.parse(html)?不知道那裏會遇到同樣的問題。
編輯:我希望我能夠傳達的問題: - >如何選擇一個正確的useragent字符串爲我的履帶,可以下載所有網站。我一定會將我的抓取工具名稱添加到useragent字符串中(如果這個信息很重要),但現在我用上面提供的一般字符串來解決問題。不知道以上情況發生了什麼。
我試過用你發佈的用戶代理,它工作。 – alkis 2014-08-30 20:28:50
感謝您的評論。 aceshowbiz似乎不適用於除「chrome」以外的其他任何內容,而bloomberg則使用上面列出的較長的useragent字符串。需要了解正在發生的事情以及爲什麼網站使用少量useragent字符串並且少數不起作用。和一個工作。 – akshayb 2014-08-30 20:36:55
您運行'我也在http://www.bloombergview.com/topics/entertainment上測試了幾個useragent字符串,並且發現只有在使用** no useragent **字符串時纔會下載**。** – alkis 2014-08-30 20:40:18