Я пытаюсь получить ссылки на веб-сайте и разместить их на List
, но я постоянно получаю неполные ссылки без корневого сайта. Например, я получаю что-то вроде /thing.html/
вместо http://website.com/thing.html/
Как получить полную/абсолютную ссылку из тега HREF с помощью javax.swing.text.html?
Он предназначен для поисковой системы, поэтому мне нужно также разобрать ссылки на сайт, и для этого мне нужна полная ссылка.
Мне также не разрешено использовать какую-либо третью библиотеку, такую как JSoup, и именно поэтому я использую javax.swing.text.html
, чтобы сделать это.
Я думаю, что вы можете сделать что-то вроде anchor.attr("abs:href")
с помощью Jsoup, это то же самое, что мне нужно здесь.
Вот код, который я до сих пор:
import java.util.List;
import java.util.ArrayList;
import java.net.*;
import java.io.*;
import javax.swing.text.html.parser.ParserDelegator;
import javax.swing.text.html.HTMLEditorKit.ParserCallback;
import javax.swing.text.html.HTML.Tag;
import javax.swing.text.html.HTML.Attribute;
import javax.swing.text.MutableAttributeSet;
public class PARSER {
public static List<String> getLinks(BufferedReader BuffRead) throws IOException {
final ArrayList<String> list = new ArrayList();
ParserDelegator parserDelegator = new ParserDelegator();
ParserCallback parserCallback = new ParserCallback() {
public void handleText(final char[] data, final int pos) { }
public void handleStartTag(Tag tag, MutableAttributeSet attribute, int pos) {
if (tag == Tag.A) {
String address = (String) attribute.getAttribute(Attribute.HREF);
//This is where I get the HREF "links"
list.add(address);
}
}
public void handleEndTag(Tag t, final int pos) { }
public void handleSimpleTag(Tag t, MutableAttributeSet a, final int pos) { }
public void handleComment(final char[] data, final int pos) { }
public void handleError(final java.lang.String errMsg, final int pos) { }
};
parserDelegator.parse(BuffRead, parserCallback, false);
return list;
}
большое спасибо! – BlindHouse