2012-09-05 53 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