Java网络爬虫爬取百度页面

最近看到网上介绍爬虫的文章,觉得很有趣,那么心动不如行动,晚上回来的时间刚好用来码代码啦~~

网络爬虫:按照一定的规则爬取网页上的信息,通常是爬取到一些URL之后然后对这些URL放入队列在一次次的进行搜索,具体不知道是DFS还是BFS了,这里的算法我没咋研究,因为本次做的爬虫实例比较简单,实现一个Java小程序,用来爬取百度页面的LOGO。

事实上爬虫的作用远大于此,本次例子仅为入门参考使用。

首先我们分析下,本次实例爬取图片的过程无非就这么几步:

1.访问百度首页,获取到网页返回的信息;

2.拿到对我们有用的信息(这里就是网页的源代码或者说所有图片的URL)

3.访问所有图片的URL;

4.以流的形式存储至本地即可。

好了,有了以上几步,那么写一个简单的爬虫就很EASY了,下面是代码,代码中有注释哦。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;




public class Bug {
	String url = "http://www.baidu.com";//待爬取的URL
	//获取url页面的源码;
	public String ClimbBug() throws IOException{
		URL accessurl = new URL(url);
		HttpURLConnection conn = (HttpURLConnection) accessurl.openConnection();
		conn.connect();//连接
		InputStream is = null;
		if(conn.getResponseCode()==200){//判断状态吗是否为200,正常的话获取返回信息
			byte[] b=new byte[4096];
			is = conn.getInputStream();
			StringBuilder sb = new StringBuilder();
			int len=0;
			while((len=is.read(b))!=-1){
				sb.append(new String(b,0,len,"UTF-8"));
			}
			return sb.toString();//返回百度页面源代码,这里跟网页上右键查看源代码的效果一致
		}
		return "Error";
	}
	//获取图片页面URL
	public List regex() throws IOException{
		System.out.println(new Bug().ClimbBug());
		String regex = "src[\\s\\S]*?>";//匹配所有图片的URL
		List list = new ArrayList();
		Matcher p = Pattern.compile(regex).matcher(new Bug().ClimbBug());
		while(p.find()){
			list.add(p.group());
		}//匹配到放入我们的URLlist
		return list;
	}
	//下载图片到本地或者结合数据库做其他想做的操作;
	public void download(List list) throws IOException{
		InputStream is =null;
		OutputStream os =null;
		for (int i=0;i

我们把图片存储在本地磁盘的D://sgx文件夹下面,运行程序后,发现本地图片已经有了百度的LOGO,测试成功!

Java网络爬虫爬取百度页面_第1张图片


你可能感兴趣的:(JavaWeb常见问题总结)