1. 程式人生 > >自己動手寫網路爬蟲學習筆記

自己動手寫網路爬蟲學習筆記

剛開始學《自己動手寫網路爬蟲》,只實現了第一部分的內容。現在做一個總結。
這本書中主要用到了HttpClient和HtmlParser這兩個開源的jar包。同時,還要依賴codec.這個開源包。
HttpClient用的是3.x版本的。HtmlParser用的是1.4版本的。
兩個版本的可以在官網上下載。也可以在我的百度網盤上下載。
連結為:http://pan.baidu.com/s/1jHBeA82
提取碼為:uo3u
在執行的過程中,會出現兩個問題。
第一個:
org.htmlparser.util.EncodingChangeException: character mismatch (new: 進 != old: è) for encoding change from ISO-8859-1 to UTF-8 at character offset 5159
通過查閱網路和看程式碼,發現是類Page中SetEncoding方法中一下程式碼的問題:

  for (int i = 0; i < offset; i++)
                        if (new_chars[i] != buffer[i])
                            throw new EncodingChangeException ("character mismatch (new: "
                            + new_chars[i]
                            + " != old: "
                            + buffer[i]
                            + ") for encoding change from "
+ encoding + " to " + character_set + " at character offset " + offset); }

註釋掉這部分程式碼即可。 修改之後的HtmlParser命名為HtmlParser1.4Revision, 在上述百度雲盤中可以下載。

第二個問題:

主要問題在於URI這個類。在java中也有這個類。通過對比發現,httpclient中的URI只能接受ASCII碼的uri。如果uri中出現可見的非ASCII字元,則會報出上面的錯誤。
修改之後,修改後的命名為HttpClient3.1Revision。在上述百度網盤中可以下載。