Java url爬虫
java 爬虫抓取
可以在线编辑java代码的连接http://www.runoob.com
import java.util.Scanner;
import java.util.ArrayList;
import java.net.*;
public class Spider {
public static void main(String[] args) {
String url = "http://www.runoob.com";
craweler(url);
} public static void craweler(String startingURL) {
int Max_item = 10000; // 爬虫抓取最大条目数
ArrayList<String> listOfPendingURLs=new ArrayList<>();
ArrayList<String> listOfTraversedURLs=new ArrayList<>();
//将起始的URL添加到listOfPendingURLs,然后通过一个while循环重复处理listOfPendingURLs中每一个URL
listOfPendingURLs.add(startingURL);
while(!listOfPendingURLs.isEmpty()&&listOfTraversedURLs.size()<=Max_item) {
//将列表中第一个RUL去除,如果该RUL没有被处理过则对其进行处理
String urlString=listOfPendingURLs.remove(0);
if(!listOfTraversedURLs.contains(urlString)) {
listOfTraversedURLs.add(urlString);
System.out.println("url:"+urlString);
//程序使用foreach循环,将页面中的每个不存在listOfTraversedURLs中的URL添加到listOfPendingURLs中
for(String s:getSubURLs(urlString)) {
if(!listOfTraversedURLs.contains(s))
listOfPendingURLs.add(s);
} }
}
} public static ArrayList<String> getSubURLs(String urlString) {
//该方法为每个给定的URL返回一个URL列表
ArrayList<String> list=new ArrayList<>();
try {
int current=0;
URL url=new URL(urlString);
Scanner input=new Scanner(url.openStream());
while(input.hasNext()) {
String line=input.nextLine();//从Web读取每一行
current=line.indexOf("http:",current);//寻找该行中的URL
while(current>0) {
int endIndex=line.indexOf("\"",current);//假设URL以引号"结束
if(endIndex>0) {
list.add(line.substring(current,endIndex));//一行中可能包含多个URL,
current=line.indexOf("http:",endIndex);//方法继续寻找下一个URL
}
else current=-1;//如果该行中没有发现URL,curr设为-1
}
}
}
catch (Exception ex) {
System.out.println("抓取异常: "+ex.getMessage());
}
return list; //页面中包含的URL以一个列表的形式返回
}
}
抓取效果:

可以对抓取到的url进行提取。
Java url爬虫的更多相关文章
- Java 网络爬虫获取网页源代码原理及实现
Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL ...
- 开源的49款Java 网络爬虫软件
参考地址 搜索引擎 Nutch Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting, ...
- java正则表达式之java小爬虫
这个java小爬虫, 功能很简单,只有一个,抓取网上的邮箱.用到了javaI/O,正则表达式. public static void main(String[] args) throws IOExce ...
- 【转】44款Java 网络爬虫开源软件
原帖地址 http://www.oschina.net/project/lang/19?tag=64&sort=time 极简网络爬虫组件 WebFetch WebFetch 是无依赖极简网页 ...
- java网络爬虫基础学习(三)
尝试直接请求URL获取资源 豆瓣电影 https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort= ...
- java网络爬虫基础学习(一)
刚开始接触java爬虫,在这里是搜索网上做一些理论知识的总结 主要参考文章:gitchat 的java 网络爬虫基础入门,好像要付费,也不贵,感觉内容对新手很友好. 一.爬虫介绍 网络爬虫是一个自动提 ...
- Java 图片爬虫,java打包jar文件
目录 1. Java 图片爬虫,制作 .jar 文件 spider.java 制作 jar 文件 添加执行权限 1. Java 图片爬虫,制作 .jar 文件 spider.java spider.j ...
- java开发爬虫Deno
java开发爬虫Deno 身为一个程序员不会两三手爬虫怎么能在行业里立足啊,这是开发中自己写的一个java爬虫的Demo,供大家参考. java爬虫的开发依赖于jsoup.jar 直接上代码 publ ...
- Java基础-爬虫实战之爬去校花网网站内容
Java基础-爬虫实战之爬去校花网网站内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 爬虫这个实现点我压根就没有把它当做重点,也没打算做网络爬虫工程师,说起爬虫我更喜欢用Pyt ...
随机推荐
- python-初始化函数
#本次学习:初始化函数 #-*- coding:utf-8 -*- class SeniorTestingEngineer: #初始化函数,在创建对象的时候就设置初始值.例如我们在SeniorTest ...
- Windows下GO开发环境配置
GO下载 https://golang.org/dl/ IDE-goland下载 http://www.jetbrains.com/go/ 本次安装go1.9.3 ...
- hive压缩
1. 常用 rcfile + gzip parquet + snappy 2. 压缩比,参考 TextFile默认格式,加载速度最快,可以采用Gzip进行压缩,压缩后的文件无法split,即并行处理 ...
- git push error HTTP code = 413
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large 将 ...
- Spring Cloud (5)hystrix 服务降级
一.是什么 二. 2.1 2.2 2.3 2.4 2.5 yml
- sql server 字符串字节长度
SQL Server 字符个数,字节长度,len不是你想要的字节数,datalength才能得到字节数 select len('娜娜123') ,datalength('娜娜123') 5 ...
- 小柒2012 / spring-boot-quartz
spring-boot-quartz 基于spring-boot+quartz的CRUD动态任务管理系统,适用于中小项目. 基于spring-boot 2.x +quartz 的CRUD任务管理系统: ...
- day23-类的封装
1.封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容.所以,在使用面向对象的封装特性时,需要:1)将内容封装到某处2)从某处调用被封装的内容 第一步:将内容封装到某处 cl ...
- netty ChannelOption
项目中用到很多netty,配置了各种不同的ChannelOption优化项,不同的配置对于在高并发情况下的性能有不小的影响 首先看下全部项目,参考下这篇文章,虽然不全 https://www.cnbl ...
- 微服务-springcloud
感觉微服务都差不多概念,最近稍微看了下springcloud,感觉入门还是很简单的,框架用用就那么回事,深入的话需要很多时间投入了 学一个东西,我推荐首先从概念上了解到他是做什么的,什么时候需要,基本 ...