如何在不加载网页的情况下获取其中的链接?(基本上我想要的是这样的。用户输入一个URL,我想要加载该URL中所有可用的链接。)你能告诉我实现这个目标的方法吗?
如何在不加载网页的情况下获取其中的链接?(基本上我想要的是这样的。用户输入一个URL,我想要加载该URL中所有可用的链接。)你能告诉我实现这个目标的方法吗?
这里是Java代码示例,具体如下:
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.parser.ParserDelegator;
public class Main {
public static void main(String args[]) throws Exception {
URL url = new URL(args[0]);
Reader reader = new InputStreamReader((InputStream) url.getContent());
System.out.println("<HTML><HEAD><TITLE>Links for " + args[0] + "</TITLE>");
System.out.println("<BASE HREF=\"" + args[0] + "\"></HEAD>");
System.out.println("<BODY>");
new ParserDelegator().parse(reader, new LinkPage(), false);
System.out.println("</BODY></HTML>");
}
}
class LinkPage extends HTMLEditorKit.ParserCallback {
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
if (t == HTML.Tag.A) {
System.out.println("<A HREF=\"" + a.getAttribute(HTML.Attribute.HREF) + "\">"
+ a.getAttribute(HTML.Attribute.HREF) + "</A><BR>");
}
}
}
public void extract_link(String site)
{
try {
List<String> links = extractLinks(site);
for (String link : links) {
System.out.println(link);
}
} catch (Exception e) {
System.out.println(e);
}
}
您需要在服务器上加载页面,然后通过在HTML/XML解析器中加载文档并遍历DOM来查找链接。然后服务器可以将链接发送回客户端。
您无法在客户端上执行此操作,因为浏览器不允许您的Javascript代码查看来自不同域的页面内容。
如果你想要页面的内容,你必须加载它。但是你可以将它加载到内存中并解析它以获取所有的<a>
标签及其内容。
你可以使用像JDom或Sax这样的工具来解析这个XML,如果你正在使用Java(如你的标签所示),或者使用简单的DOM工具与JavaScript一起使用。
资源:
同一主题:
<a
标签。 - Colin Hebert