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

有推荐的工具也可以。
2024-12-28 01:31:17
推荐回答(5个)
回答1:

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

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

以下是详细代码:

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 hrefList = new ArrayList();
 /**
  * 网页编码方式
  */
 String charSet;
 public HtmlParser(String htmlUrl) {
  // TODO 自动生成的构造函数存根
  this.htmlUrl = htmlUrl;
 }
 /**
  * 获取分析结果
  * 
  * @throws IOException
  */
 public ArrayList 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("");
  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 hrefList = a.getHrefList();
  for (int i = 0; i < hrefList.size(); i++)
   System.out.println(hrefList.get(i));
 }
}

回答2:

安装一个迅雷。然后在网页任何地方右键 选择使用迅雷下载全部链接!!

回答3:

可以百度LmCjl在线工具,里面就有这个抓取链接的工具。

回答4:

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


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

回答5:

可以百度LmCjl在线工具,有这个抓取链接的工具。