Как заменить ссылки в существующем HTML-документе новыми ссылками? - PullRequest
0 голосов
/ 12 октября 2018

У меня есть HTML-документ, который состоит из нескольких ссылок, мне нужно изменить ссылки из этого HTML-документа на новый.Пример: входной HTML-документ: https://stackoverflow.com">stackoverflow https://stackoverflow1.com">stackoverflow1

выходной HTML-документ: stackoverflow 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 голосов
/ 12 октября 2018

Это не 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");
    }
}
0 голосов
/ 12 октября 2018

Это то, что вы имеете в виду?Вам нужен только 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>
...