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

有推荐的工具也可以。... 有推荐的工具也可以。 展开
 我来答
samismiling
2017-07-11 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部

由于题目是放在【编程语言】栏目下的,但没有指定希望使用哪种编程语言,我选择使用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));
 }
}
深圳联雅网络科技有限公司
2020-02-18 广告
一、申请域名,二、申请空间,三、定位网站,四、分析网站功能和需求(网站策划)。五、网站风格设计,六、网站代码制作,七、测试网站,八、FTP上传网站,九、完善资料,十、网站推广维护,... 点击进入详情页
本回答由深圳联雅网络科技有限公司提供
frd11512
2014-05-30 · TA获得超过722个赞
知道小有建树答主
回答量:618
采纳率:50%
帮助的人:84.6万
展开全部
安装一个迅雷。然后在网页任何地方右键 选择使用迅雷下载全部链接!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鲜丽且顽强丶福星4929
2020-02-25
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
可以百度LmCjl在线工具,里面就有这个抓取链接的工具。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sub100333
2014-05-30 · TA获得超过2437个赞
知道大有可为答主
回答量:1657
采纳率:50%
帮助的人:647万
展开全部

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


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

追答

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

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



本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
精心又聪慧的小草5229
2020-02-25
知道答主
回答量:7
采纳率:0%
帮助的人:2315
展开全部
可以百度LmCjl在线工具,有这个抓取链接的工具。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式