当前位置: 首页 > 知识库问答 >
问题:

如何使用Jsoup获得href链接而没有额外的字符?

颜奇希
2023-03-14

我有一个元素列表,我正在使用JSOUP的方法attr()来获取href属性。下面是我的部分代码:

    String searchTerm = "tutorial+programming+"+i_SearchPhrase;
    int num = 10;
    String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num;
    Document doc = Jsoup.connect(searchURL).userAgent("chrome/5.0").get();   
    Elements results = doc.select("h3.r > a");
    String linkHref;

    for (Element result : results) {
        linkHref = result.attr("href").replace("/url?q=","");
        //some more unrelated code...
        }

例如,当我使用搜索prase“test”时,attr(“href”)生成(列表的第一个):

linkHref=https://www.tutorialspoint.com/software_testing/&sa=u&ved=0ahukewi_li-t69jtahxibxqkhu1kblaqfggtmaa&usg=afqjcnhr6ezeyegpddphjndlj-889sj3eq

我只想去的地方:https://www.tutorialspoint.com/software_testing/

解决这个问题最好的方法是什么?我只是在linkHref上添加一些字符串操作(我知道如何操作),还是有办法让href属性包含一个较短的链接?提前致谢

共有1个答案

壤驷英叡
2023-03-14

如果总是希望删除query参数,可以使用String.indexOf()例如。

int lastPos;
if(linkHref.indexOf("?") > 0) {
   lastPos = linkHref.indexOf("?");
} else if (linkHref.indexOf("&") > 0){
   lastPos = linkHref.indexOf("&");
}
else lastPos = -1;

if(lastPos != -1)
linkHref = linkHref.subsring(0, lastPos);
 类似资料:
  • 我的代码返回网页上的所有链接,但当我在谷歌上搜索某些东西时,例如“android”,我想获取第一个链接。我该怎么做? 这是我的代码

  • 问题内容: import urllib2 到目前为止,一切都很好。 但是我只希望纯文本HTML中的href链接。我怎么解决这个问题? 问题答案: 尝试使用Beautifulsoup: 如果您只想要以开头的链接,则应使用: 在带有BS4的Python 3中,它应该是:

  • 我有一些url。我想从url指向的html中获取所有href,从所有获取的hrefs中获取所有href(递归)。关键是我想设置“递归”的深度。例如,如果深度=1,我只需要来自超文本标记语言的href。如果深度=2,我需要来自超文本标记语言的hrefs(假设为list1)和来自list1的每个href的hrefs,依此类推 以下是我使用jsoup得到的结果: 我应该如何修复递归条件以使其正确?

  • 我有一个html链接

  • 问题内容: 以下是一堆链接,其中 只有一个 具有子字符串“ long”作为属性href的值 我需要单击其子字符串为“ long” 的链接。我怎样才能做到这一点? PS://由名字选择的b / c 问题答案: 我需要单击href包含子字符串“ long”的链接。我怎样才能做到这一点? 具有CSS选择器的美丽。 您的陈述将是… 这是英文的意思 给我找到任何具有属性的“ a”元素,以及具有“ long”