如何抓取一个网址下的所有页面链接 ?

有推荐的工具也可以。

由于题目是放在【编程语言】栏目下的,但没有指定希望使用哪种编程语言,我选择使用java语言来实现。

在Java中,使用HttpURLConnection即可连接URL,随后可以使用InputStreamReader获取网页内容文本。然后,使用正则表达式解析网页内容文本,找到所有的<a>标签即实现需求。

以下是详细代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HtmlParser {
 /**
  * è¦åˆ†æžçš„网页
  */
 String htmlUrl;
 /**
  * åˆ†æžç»“æžœ
  */
 ArrayList<String> hrefList = new ArrayList();
 /**
  * ç½‘页编码方式
  */
 String charSet;
 public HtmlParser(String htmlUrl) {
  // TODO è‡ªåŠ¨ç”Ÿæˆçš„构造函数存根
  this.htmlUrl = htmlUrl;
 }
 /**
  * èŽ·å–分析结果
  * 
  * @throws IOException
  */
 public ArrayList<String> getHrefList() throws IOException {
  parser();
  return hrefList;
 }
 /**
  * è§£æžç½‘页链接
  * 
  * @return
  * @throws IOException
  */
 private void parser() throws IOException {
  URL url = new URL(htmlUrl);
  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  connection.setDoOutput(true);
  String contenttype = connection.getContentType();
  charSet = getCharset(contenttype);
  InputStreamReader isr = new InputStreamReader(
    connection.getInputStream(), charSet);
  BufferedReader br = new BufferedReader(isr);
  String str = null, rs = null;
  while ((str = br.readLine()) != null) {
   rs = getHref(str);
   if (rs != null)
    hrefList.add(rs);
  }
 }
 /**
  * èŽ·å–网页编码方式
  * 
  * @param str
  */
 private String getCharset(String str) {
  Pattern pattern = Pattern.compile("charset=.*");
  Matcher matcher = pattern.matcher(str);
  if (matcher.find())
   return matcher.group(0).split("charset=")[1];
  return null;
 }
 /**
  * ä»Žä¸€è¡Œå­—符串中读取链接
  * 
  * @return
  */
 private String getHref(String str) {
  Pattern pattern = Pattern.compile("<a href=.*</a>");
  Matcher matcher = pattern.matcher(str);
  if (matcher.find())
   return matcher.group(0);
  return null;
 }
 public static void main(String[] arg) throws IOException {
  HtmlParser a = new HtmlParser("http://news.163.com/");
  ArrayList<String> hrefList = a.getHrefList();
  for (int i = 0; i < hrefList.size(); i++)
   System.out.println(hrefList.get(i));
 }
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-30
安装一个迅雷。然后在网页任何地方右键 选择使用迅雷下载全部链接!!
第2个回答  2020-02-25
可以百度LmCjl在线工具,里面就有这个抓取链接的工具。
第3个回答  2014-05-30

附件为simon页面URL一键提取器V1.1


可以直接按规则提取,软件不大功能适用。

追答

网站地图制作工具 (Sitemap Creator ver2.1)用于制作网站地图(sitemap.xml),可以帮助广大站长和网商更快速地推广网站。

网站地图制作工具可以自动抓取一个网站的所有网页链接



本回答被提问者和网友采纳
第4个回答  2020-02-25
可以百度LmCjl在线工具,有这个抓取链接的工具。
相似回答