网络爬虫java版

java版的网络爬虫基本思路是,先获取网页信息,再根据正则表达式提取网页内容

package xuexi;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class webtest {
 /**
  * 获得urlStr对应的网页的源码内容
  * @param args
  * @throws IOException
  */
    public static String  getURLContent(String urlStr,String charset){
        StringBuffer sb=new StringBuffer();
        try {
        URL    url = new URL(urlStr);
        BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),Charset.forName(charset)));
        String temp="";
        do{
            temp=reader.readLine();
            sb.append(temp);
            //System.out.println(temp);
        }while(temp != null);

        }catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return sb.toString();
    }

    /**
     * 正则表达式截取字符串
     * @param destStr
     * @param regexStr
     * @return
     */
    //参数:字符窜和正则表达式
    public static List<String> getMatherSubstrs(String destStr,String regexStr){
        List<String> result = new ArrayList<String>();
          Pattern p=Pattern.compile(regexStr);
          Matcher m=p.matcher(destStr);
          while(m.find()){
              result.add(m.group(0));
          }
          return result;
    }

  public static void main(String[] args) throws IOException {
      String content=getURLContent("https://www.qq.com/","utf-8");
      List<String> list=getMatherSubstrs(content,"href=\"+[\\w./:]+\"");
       for(String a: list){
          System.out.println(a);
       }

  }
}

原文地址:https://www.cnblogs.com/hzcjd/p/12227948.html

时间: 2024-08-29 16:31:40

网络爬虫java版的相关文章

Python 网络爬虫单线程版

re.S让.能够匹配\n,默认情况点是不能匹配换行符的 1.爬取网页源码中的图片 #-*- coding:utf-8 -*- import re import requests with open('source.txt', 'r') as f:     html = f.read() #匹配图片网址,括号中为需要返回的内容 pic_url = re.findall('img src="(.*?)" class="lessonimg"', html, re.M) i

网络爬虫Java实现抓取网页内容

package 抓取网页; import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.comm

SuperSpider(简书爬虫JAVA版)

* 建站数据SuperSpider(简书)* 本项目目的:* 为练习web开发提供相关的数据:* 主要数据包括:* 简书热门专题模块信息.对应模块下的热门文章.* 文章的详细信息.作者信息.* 评论区详细信息.评论者信息等...* 最后存储mysql数据库. 想学习爬虫的同学也可以瞧瞧 整个项目跑完花了近十个小时, 足见数据之多, 个人web开发练习用来充当建站数据也是绰绰有余的(手动嘚瑟) 代码注释写的挺详细的,我就直接上代码了. 主要代码: 1 ? 2 3 /** 4 * 此类对简书文章内容

我的第一个网络爬虫 C#版 福利 程序员专车

最近在自觉python,看到了知乎上一篇文章(https://www.zhihu.com/question/20799742),在福利网上爬视频... 由是我就开始跟着做了,但答主给的例子是基于python2.x的,而我开始学的是3.x,把print用法改了以后还是有很多模块导入不了,新手又不知道该怎么解决. 于是,为了学(shang)习(che),我就把其中的一段代码用C#写了一次.在加了一些延时的情况下,一会儿硬盘就被占用了3个多g了...同学们,要注意身体啊 下面贴出代码..代码中故意留了

Java版网络爬虫基础(转)

网络爬虫不仅仅可以爬取网站的网页,图片,甚至可以实现抢票功能,网上抢购,机票查询等.这几天看了点基础,记录下来. 网页的关系可以看做是一张很大的图,图的遍历可以分为深度优先和广度优先.网络爬虫采取的广度优先,概括的说来如下: 2个数组,一个记录已访问的网页(Al),一个记录未访问的网页(Un).假设网页A为爬取的起始点,分析A中的所有的超链接B,C,D,将B,C,D加入到Un,分析B中的所有的超链接E,F,将E,F加入到Un末尾,将B从Un除去并加入到AL.依次分析Un中的超链接并加入到Un中就

Java版网络爬虫基础

网络爬虫不仅仅可以爬取网站的网页,图片,甚至可以实现抢票功能,网上抢购,机票查询等.这几天看了点基础,记录下来. 网页的关系可以看做是一张很大的图,图的遍历可以分为深度优先和广度优先.网络爬虫采取的广度优先,概括的说来如下: 2个数组,一个记录已访问的网页(Al),一个记录未访问的网页(Un).假设网页A为爬取的起始点,分析A中的所有的超链接B,C,D,将B,C,D加入到Un,分析B中的所有的超链接E,F,将E,F加入到Un末尾,将B从Un除去并加入到AL.依次分析Un中的超链接并加入到Un中就

网页爬虫的设计与实现(Java版)

网页爬虫的设计与实现(Java版)     最近为了练手而且对网页爬虫也挺感兴趣,决定自己写一个网页爬虫程序. 首先看看爬虫都应该有哪些功能. 内容来自(http://www.ibm.com/developerworks/cn/java/j-lo-dyse1/index.html?ca=drs-) 网页收集的过程如同图的遍历,其中网页就作为图中的节点,而网页中的超链接则作为图中的边,通过某网页的超链接 得到其他网页的地址,从而可以进一步的进行网页收集:图的遍历分为广度优先和深度优先两种方法,网页

【转】44款Java 网络爬虫开源软件

原帖地址 http://www.oschina.net/project/lang/19?tag=64&sort=time 极简网络爬虫组件 WebFetch WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api接口 能在Android设备上稳定运行 小巧灵活可以方便集成的网页抓取组件 使用...更多WebFetch信息 开源爬虫框架 Guozhong

学 Java 网络爬虫,需要哪些基础知识?

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic .我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知道其设