2012-09-05 207 views
0

我正在使用Jsoup。 我做得到document= connect.get();並獲得html頁面。從網站獲取超鏈接

現在我把它寫到一個文本(字符串)。

我有填充這些頁面的用戶。 我知道每個用戶名。這些頁面有用戶名。 我能夠做一個string.contains(「用戶名」)來檢查用戶是否存在。

現在我的問題是: 我有一個有名字的用戶在

有序列表中體

無序列表

但在所有這些情況下,他們格式爲:示例

<li><a href="http://university.xxx.students.com/grade9/john/117429">2012 academic record</a></li> 

有些是表和所有..

在這個例子中,我知道學生的名字=約翰。 我怎樣才能得到所有的網址?

==

+0

我認爲不是所有的URL是這樣的: 'http://university.xxx.students.com/grade9/ ' 是否正確? –

+0

是的。有些是在表格中,有些學生有--http://university.xxx.students.com/grade9/john/117429「>約翰

+0

我正在尋找greping的頁面。如果在鏈接(或)文本中存在學生姓名,則提取鏈接。 –

回答

0

如何:

Document doc = Jsoup.connect(url).get(); 
    Elements links = doc.select("a[href]"); 

    for (Element link : links) { 
     if(link.attr("abs:href").contains(studentName) || link.text().contains(studentName)){ 
      studentLinkList.add(link.attr("abs:href")); 
     } 
    } 
1

您可以使用正則表達式是:

Elements elements = document.select("[href~=(?is)http://university\\.xxx\\.students\\.com/grade9/(.+?)/[0-9]+?]")

更抽象:document.select("a[href~=regex]")

如果你已經知道這個名字可以更換(.+?),例如:

Elements elements = document.select("[href~=(?is)http://university\\.xxx\\.students\\.com/grade9/" + name + "/[0-9]+?]")

+0

感謝ollo的reply.my輸入頁面是一個大頁面,提供了很多數據和鏈接我提供了一個示例(university.xxx.students.com/grade9/),...我有一個頁面,其中包含hrefs/li/..和所有。在一個如果他們我知道學生的名字。所以當我看到那個學生名我想獲得包含這個(或)的鏈接相關聯(如果學生的名字是在文本中)獲得href關聯 –

+0

你可以用一個額外的檢查如'*:contains (名)'。這將找到包含名稱的任何元素,在那裏您可以從中獲得'href'屬性。 – ollo