我有一个包含多个链接的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();
}
答案 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,这是我编写的另一种解析器。它对我的 外国新闻翻译业务 非常有用。
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");
}
}