Java爬虫(三)--获取网页中的所有地址

19人阅读 评论(0) 收藏 举报
分类:

在这里就懒得处理异常,代码很简单,看注释

package test;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class GetUrl {
    public static List getUrl(String uri) throws Exception{
        List list=new ArrayList<>();//用list来存放地址
        URL url=new URL(uri);
        String protocol=url.getProtocol();//获取协议
        String host=url.getHost();//获取域名
        Document doc=Jsoup.connect(uri).get();//dom解析html
        Elements ele=doc.getElementsByTag("a");//获取网页中的a标签
        for(Element a:ele){//遍历
            String href=a.attr("href");
            /**
             * a标签中有四种值,需要判断,例如:
             * 1.只有路径:/citylist.html
             * 2.含有js代码:javascript:void(0)
             * 3.网址全称:http://www.xuecheyi.com/Info/List-83.html
             * 4.没有后缀/Info
             * 
             */
            String reg="[a-zA-z]+://[^\\s]*";
            Pattern p=Pattern.compile(reg);
            Matcher m=p.matcher(href);
            if(m.find()){//通过正则表达式匹配了第三种http://jx.xuecheyi.com/member/login/index
                list.add(href);
            }else if(href.indexOf("/")==0){//匹配第一四两种
                /**
                 * /login/ind
                 * 0123456789
                 * 匹配出来的地址需要在前面加上协议和域名
                 */
                list.add(protocol+"://"+host+href);
            }
        }
        return list;
    }
}

从main方法读取

package test;

import java.util.Iterator;
import java.util.List;

public class TestPc {
    public static void main(String[] args) throws Exception {
        String uri="http://www.xuecheyi.com/Info/show-27818.html";
        //Util.DownLoadPage(uri);
        List list=GetUrl.getUrl(uri);
        Iterator it=list.iterator();
        while(it.hasNext()){
            uri=(String)it.next();
            System.out.println(uri);
        }
    }
}

效果图:
这里写图片描述

查看评论

简单的网络爬虫(获取页面中的url)

简单的网络爬虫(获取页面中的url) package text; import java.io.BufferedReader; import java.io.FileWriter; import...
  • WSDS_MZM
  • WSDS_MZM
  • 2017-09-21 16:33:09
  • 745

正则表达式获取网页中所有图片的路径

/** * 从HTML源码中提取图片路径,最后以一个 String 类型的 List 返回,如果不包含任何图片,则返回一个 size=0 的List * 需要注意的是,此方法只会提取以下格式的图...
  • hemingwang0902
  • hemingwang0902
  • 2009-02-15 21:38:00
  • 7143

java网络爬虫——获取页面的所有超链接的内容

package com.http3; import java.util.ArrayList; import java.util.List; import org.htmlparser...
  • ld191474639
  • ld191474639
  • 2012-09-17 23:01:44
  • 10193

获取网页内所有图片地址

打开页面,当页面全部载入完毕后,从地址栏 运行,以下code中的javascript:.........那个即可。。 window.onload = function () {    (functio...
  • muxrwc
  • muxrwc
  • 2007-09-12 12:00:00
  • 1462

Java实现网络爬虫爬取网页链接并设置搜索深度(广搜)

用Java去写网络爬虫,只爬取网页链接,并设置搜索的深度。
  • Coder_XiaoHui
  • Coder_XiaoHui
  • 2017-03-31 21:33:58
  • 2117

Java爬虫实战(二):抓取一个视频网站上2015年所有电影的下载链接

前言:这是Java爬虫实战的第二篇文章,在第一篇文章仅仅只是抓取目标网站的链接的基础上,进一步提高难度,抓取目标页面上我们所需要的内容并保存在数据库中。这里的测试案例选用了一个我常用的电影下载网站(h...
  • StarLOVELeaf
  • StarLOVELeaf
  • 2017-05-11 08:08:14
  • 5844

java实现爬虫爬网站图片

第一步,实现 LinkQueue,对url进行过滤和存储的操作 import java.util.ArrayList; import java.util.Collections; import jav...
  • javaxiaojian
  • javaxiaojian
  • 2015-06-29 11:34:09
  • 22481

Java爬虫实战(一):抓取一个网站上的全部链接

前言:写这篇文章之前,主要是我看了几篇类似的爬虫写法,有的是用的队列来写,感觉不是很直观,还有的只有一个请求然后进行页面解析,根本就没有自动爬起来这也叫爬虫?因此我结合自己的思路写了一下简单的爬虫,测...
  • StarLOVELeaf
  • StarLOVELeaf
  • 2017-05-11 08:09:33
  • 1875

Java网页爬虫获取邮件地址

java正则表达式网页爬虫
  • hoho_12
  • hoho_12
  • 2016-05-02 21:44:08
  • 777

python编写爬虫获取区域代码-递归获取所有子页面

上一篇文章用htmlparser写了一个java的获取区域的爬虫,觉得太笨重。发现python也可以实现这个功能。 这里就简单写一个用python3写的小爬虫例子 功能目标:对指定网站的所有区域信...
  • hdu09075340
  • hdu09075340
  • 2017-07-03 15:33:09
  • 1215
    个人资料
    等级:
    访问量: 110
    积分: 62
    排名: 162万+
    文章分类
    文章存档