2010-07-30 33 views
1

我有以下...我不會說問題,但情況。如何使用Java在HTML中查找URL

我有一些標籤和一切的HTML。我想搜索每個網址的HTML。我這樣做,現在通過檢查它說:「H」然後「T」然後「T」,那麼「P」,但我不認爲這是一個很好的解決方案

什麼好的建議?


補充:我正在尋找某種僞代碼,但是,爲了以防萬一,我使用的Java爲這個項目特別

回答

5

嘗試使用HTML解析庫然後搜索HTML文檔中<a>標籤。

Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); 
Elements links = doc.select("a[href]"); // a with href 

不是所有網址都在標籤,有些是文字 ,有些是在鏈接或其他標記

你不應該掃描HTML源代碼來實現這一點。

您將以鏈接元素結束,這些鏈接元素不一定在頁面的「文本」中,即最終可能會在頁面中以「腳本鏈接」結尾。

的最佳方式仍然是你使用的工作做了一個工具。

你應該抓住HTML標籤,並覆蓋最有可能的鏈接在裏面(說:<h1>,<p>,<div>等)。 HTML解析器提供正則表達式功能,通過標記的內容過濾,類似於「以HTTP開始」的邏輯。

[attr^=value][attr$=value][attr*=value]:元件與 屬性與開始,結束與, 或包含值,例如 select("[href*=/path/]")

參見:jSoup

+0

不是所有的URL都在標籤,有些是文字,有些是在鏈接或其它標籤:由地那個 ,我將它添加到我的書籤中,jSoup頁以供日後參考,但我可以「T用它在這個項目:(我需要所有的URL – Saikios 2010-07-30 04:05:09

+0

我就給你這個感謝@Bakkal – Saikios 2010-07-30 04:17:37

+0

這有助於我一試,謝謝 – 2012-10-18 14:19:39

0

使用DOM解析器提取所有<a href>標籤,而且,如果需要,另外掃描那些標籤外部的http://源。

+0

不是所有網址都在標籤,有些是文字,有些是在鏈接或其它標籤:S – Saikios 2010-07-30 04:03:59

+0

@Saikios:這就是我說的。關於掃描標籤外部其他鏈接的部分。我的單句答案的後半部分。它太長了嗎? – Borealid 2010-07-30 04:07:01

+0

嘿,不,它不是,但如果我這樣做,我會有什麼好處......只有幾個href? :(我的想法是試圖做一些像str_replace使用索引或reg_exp,但我有它飛過我的腦海 – Saikios 2010-07-30 04:11:13

1

你可能想看看XPathRegular Expressions

+0

嗨,我是使用Java,但無論如何,就像我告訴其他人我試圖 得到字符串文本,鏈接等所有的網址。感謝大家回答;) – Saikios 2010-07-30 04:07:02

0

,最好的辦法應該是谷歌正則表達式。一個例子是這樣的一個:

/^(https?):\/\/((?:[a-z0-9.\-]|%[0-9A-F]{2}){3,})(?::(\d+))?((?:\/(?:[a-z0-9\-._~!$&'()+,;=:@]|%[0-9A-F]{2})))(?:\?((?:[a-z0-9\-._~!$&'()+,;=:\/[email protected]]|%[0-9A-F]{2})))?(?:#((?:[a-z0-9\-._~!$&'()+,;=:\/[email protected]]|%[0-9A-F]{2})*))?$/i 

hacker news article找到。據我所知,它看起來不錯。但據我所知,這個問題沒有正式的正則表達式。所以最好的解決方案是谷歌的一些和嘗試哪一個匹配你想要的大部分。

+0

coolregex但是是爲了別的東西,這是爲了檢查如果url是一個正確的網址,但不是從一個大的URL獲取網址我認爲那個字符串可能比較大:P – Saikios 2010-07-30 04:42:58

相關問題