如何用新链接替换现有html文档中的链接?

时间:2018-10-12 10:06:35

标签: java html file parsing jsoup

我有一个包含多个链接的HTML文档,我需要将链接从此HTML文档更改为新的HTML文档。 示例:输入html文档: https://stackoverflow.com“> stackoverflow https://stackoverflow1.com“> stackoverflow1

输出html文档: 堆栈溢出 stackoverflow1

我正在使用jsoup解析器从我的文档中获取所有链接的列表。 而且我在替换html文件中的链接时遇到了困难。

以下是我的代码段:运行代码后,我的test.html并未使用新链接进行更新。

Path path = Paths.get("test.html");
    Charset charset = StandardCharsets.UTF_8;
    Document doc;
    try {
        doc = Jsoup.parse(new File("test.html"), "UTF-8");
        Element content = doc.getElementById("ExtractLinks");
        Elements links = content.getElementsByTag("a");

        for (Element link : links) {
            String linkHref = link.attr("href");
            System.out.println("URL:" + linkHref);
            String fileContent = new String(Files.readAllBytes(path), charset);
            fileContent = fileContent.replaceAll(linkHref, "www.google.com");
            Files.write(path, fileContent.getBytes(charset));
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

2 个答案:

答案 0 :(得分:0)

这是您的意思吗?您只需要JS。

var anchor_tags = document.getElementsByTagName("a");
    for (var i = 0; i < anchor_tags.length; i++) {
        var orig_href = anchor_tags[i].href;
        var new_href = orig_href.replace("https://","");
        var final_href = new_href.replace(".com/","");
        alert(final_href);
    }
<a href="https://stackoverflow.com"></a>
    <a href="https://stackoverflow1.com"></a>

答案 1 :(得分:0)

这不是JSOUP,这是我编写的另一种解析器。它对我的 外国新闻翻译业务 非常有用。

  

http://developer.torello.directory/JavaHTML/index.html

import Torello.HTML.*;
import Torello.Java.FileRW;
import java.util.*;
import java.io.IOException;

public class AHREF_Replace
{
    public static void main(String argv[]) throws IOException
    {
        Vector<HTMLNode> page = HTMLPage.getPageTokens(new java.net.URL("your-url"), false);

        int[] anchors = TagNodeFind.all(page, TC.OpeningTags, "a");
        for (int i : anchors)
        {
            TagNode tn      = (TagNode) page.elementAt(i);
            String oldHREF  = Tags.getInnerTagValue(tn, Tags.A_HREF);
            String newHREF  = /* Your URL Transformation */ "";
            TagNode newTN   = new TagNode("<A HREF=\"" + newHREF + "\">");
            page.setElementAt(newTN, i);
        }
        String newPage = HTMLNodeFunction.pageToString(page);
        FileRW.writeFile(newPage, "new-HTML-page.html");
    }
}