2012-03-19 11 views
1

我在玩傑里科的html語法分析器,但我找不到信息,或者是有關如何設置或更改用戶代理的示例。我找到了Config類,但不知道如何使用它,其他人能給我一個例子嗎?如何設置用戶代理與傑里科語法分析器

我設法解析一個網站,但我不確定是否Jericho的解析器添加了一個用戶代理。正如你可能知道我想要一個合適的用戶代理來阻止一個站點禁止我訪問它的內容。

謝謝。

+0

「你可能知道我想要一個合適的用戶代理來阻止一個站點禁止我訪問它的內容。」 - 這聽起來像您正試圖讓您的程序忽略目標網站上的「robots.txt」的內容。這是*不是你應該嘗試做的事情。任何訪問網頁的程序都應遵守「robots.txt」的內容。不這樣做的後果可能是該網站假定您的程序是垃圾郵件,並會阻止來自您的程序發送請求的IP地址的任何請求。 – Jon 2012-03-19 12:03:17

+0

Jon,thnx您的帖子,我完全忘了robots.txt。無論如何,我測試過的網站恰好可以抓取網頁(我假設它是用於google bot進行索引的)。儘管如此,可能有些網站不允許出於某種原因,但試圖通過僞裝成「普通」瀏覽器來訪問它。有人知道如何與傑里科做到這一點嗎?謝謝。順便說一句,你應該注意到我不會「盜用」濫用內容,而且我只會偶爾做一次(就像幾天)。 – AndaluZ 2012-03-19 14:29:27

+0

好吧,夠公平的。我快速瀏覽了Jericho API,它看起來像一個名爲「Source」的類,您可以傳入一個JDK URLConnection對象。 URLConnection允許您在請求上設置標題,其中一個標題可以是「User-Agent」。我會看看這樣做。看看方法「setRequestProperty」,並閱讀此:http://stackoverflow.com/questions/5773800/httpurlconnection-redirection-does-not-use-request-properties-of-orginial-connec – Jon 2012-03-19 15:26:47

回答

3

繼我上面的評論,請確保你總是服從robots.txt。除此之外,你想要的代碼應該看起來像這樣。

 

import java.net.URL; 
import java.net.URLConnection; 
import java.util.List; 

import net.htmlparser.jericho.Element; 
import net.htmlparser.jericho.Source; 

public class HtmlFun { 

    public static void main(String[] args) throws Exception { 
     URL url = new URL("http://www.google.com"); 
     URLConnection conn = url.openConnection(); 
     conn.setConnectTimeout(1000); 
     conn.setReadTimeout(1000); 
     conn.setRequestProperty("User-Agent", "Mozilla"); 

     Source source = new Source(conn); 
     List elems = source.getAllElements(); 
     for(Element elem : elems) { 
     System.out.println(elem); 
     } 
    } 
} 
 

由於防火牆問題,無法運行它,但我認爲這應該適用於您。如果不是的話,類似的東西就可以解決問題。

+0

喬恩,非常感謝你你的幫助,我真的很感激它。我不能投票給你,因爲我需要15個聲望......無論如何。無論如何,我檢查你的帖子解決,再次感謝你。 – AndaluZ 2012-03-19 16:08:45

+0

不用擔心。很高興有幫助 :-) – Jon 2012-03-19 16:45:45