2015-10-18 22 views
0

我正在學習使用JSoup(緩慢)解析網站的源代碼,但我感覺自己已接近我的繩索的末端。也就是說,我不完全確定我應該考慮哪些方法。與Android Studio一起使用JSoup從網站或RSS訂閱源收集信息

從理論上講,我想開發一款應用程序,通過特定的搜索頁面(即Google,Monster,Craigslist,eBay等)篩選並抽出某些數據。這些數據可能在第一頁,但它可能超過10多頁(谷歌,顯然它可能是數百)。無論是搜索結果(谷歌),招聘信息(Monster)還是出售物品(Craigslist/eBay),我該如何着手完成這項工作?

直到最近我才知道JSoup。而且我不會「卡住」使用它。但是,我的研究讓我相信使用JSoup會給我想要的結果。所以,我試圖學習如何使用它來做我想做的事。 (如果有人知道任何廣泛的初學者教程,讓我知道)

那麼我應該怎麼做呢?我知道這是一個模糊的問題,但我有一個目標,我不知道我是如何得到它的。

我也考慮過在可用時使用/搜索RSS提要(即Craigslist)。這是否也是可能的,比試圖直接從網站/源代碼中獲取更容易或更難?

最重要的是,我希望能夠在新信息出現時發送用戶通知(Craigslist/eBay上出售新物品,Monster上新工作等)。我知道一個單獨的主題,一個我可以弄清楚我確定。

在此先感謝!

回答

3

你的回答有點含糊,所以我會盡量掩蓋。 Jsoup是一個HTML/XHTML parser庫。這意味着它可以向某個URL發送GETPOST請求並獲取服務器生成的內容。然後它解析這個內容,使用java對象構建一個DOM表示。

問題是你的例子。你提到GoogleMonster。就像我知道這些網站使用Ajax爲了從服務器檢索內容。他們使用javascript來生成動態內容。 Jsoup無法處理javascript生成的內容。這是由於它無法執行javascript。它可以肯定地「看到」它,因爲它包含在服務器的響應中,但它將它視爲簡單的文本而不是代碼。由於包含javascript執行引擎,瀏覽器可以處理這類內容。

通常情況下,從源文件的API獲取內容更安全/更好/更容易。它是否提供rss feedAPI?然後使用它。例如Googleprovides a way以編程方式執行搜索查詢。

如果信息源沒有提供訪問它的程序化方式,那麼只要內容是靜態的,就可以使用Jsoup解析內容。爲了確定內容是否爲靜態或由javascript生成,請訪問您要解析的網站並按Ctrl + UHTML的網格是當您向網站發出請求時將收到的Jsoup。如果您需要的內容不包含在那裏,那麼內容是動態的。在這種情況下,您必須使用headless browser,這是一個庫/框架,其中包括一個javacript執行引擎。這樣你就可以100%模擬瀏覽器。

就教程而言,this將覆蓋您關於Jsoup的所有需求。如果生成的內容是javacript,則可以使用無頭瀏覽器檢索內容,然後使用Jsoup解析已檢索的內容僅用於解析而不能獲取內容。

我提供的材料足以繼續您的研究。爲了獲得更好的信息,您必須具體說明您面臨的問題。

更新

檢查selenium for androidselendroid

+0

感謝您抽出時間來提供這麼多的信息。我認爲這很有幫助,我確實明白你在說什麼。我一直在瀏覽一些我想從中獲得的網站代碼,並且我已經開始意識到他們使用Javascript,並且這可能是一個問題。看起來好像我的下一步是查看無頭瀏覽器,但我不確定此刻該從哪裏出發,或者如何使用它來改變我的狀況。那部分我不明白。再次,非常感謝! – lilgodwin

+0

檢查我的更新。如果它解決了你的問題,不要忘記接受答案。雖然如此,我建議您先查看官方API,然後考慮抓取內容。 – alkis

+0

是否有其他方法可以從我們提到的網站解析或以某種其他方式拉取,使用Javascript生成其結果的網站?另外,我對這樣一個模糊的帖子表示歉意,你需要更多的信息來幫助指導我? – lilgodwin