当前位置:首页 > 开发 > 编程语言 > 蜘蛛爬虫 > 正文

简易java爬虫 改改路径可直接运行(httpclient+jsoup)

发表于: 2014-08-21   作者:DavidIsOK   来源:转载   浏览:
摘要: 这几天在研究java爬虫,争取整理出个教程,一般都是用httpclient 和 Jsoup 来做的,   httpclient 下载地址:http://mirrors.hust.edu.cn/apache//httpcomponents/httpclient/binary/httpcomponents-client-4.3.5-bin.zip jsoup 下载地址: ht

这几天在研究java爬虫,争取整理出个教程,一般都是用httpclient 和 Jsoup 来做的,

 

httpclient 下载地址:http://mirrors.hust.edu.cn/apache//httpcomponents/httpclient/binary/httpcomponents-client-4.3.5-bin.zip

jsoup 下载地址: http://jsoup.org/download

 

导入到myeclipse 就可以了

先来个例子:

 

下面是参照部分资料写的实例代码,由于这个网站结构可能会变化,不保证这程序在永久能运行,如果运行不了,改一下select 语句后面的东西,注意部分路径比如图片存放目录要改一下

package com.hxw.spider;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class httpGetPics {

	
	/**
	 * 抓取图片存放目录
	 */
	private static final String PIC_DIR = "E:/电脑桌面/captcha";   //事先要建好文件夹
	
	private static final int TIME_OUT = 500;  //链接超时
	static void getPics(String url) throws Exception {
	    Connection conn= Jsoup.connect(url);
	    Document doc = conn.get();
	    Elements links = doc.select("div.cc a[href]");
	    for(int i=0;i<links.size();i++){
	        Element element = links.get(i);
	        final String dirUrl = "http://www.3lian.com"+element.attr("href");
	        System.out.println("首页一级图片地址: "+dirUrl);
	        Thread.sleep(500);
            new Thread(new Runnable() {  //创建多个线程来下载这些图片
                public void run() {
                    try {
                        Connection conn= Jsoup.connect(dirUrl);
                        Document doc = conn.get();
                        Elements images = doc.select("ul.ulBigPic li img[src]");
                        for(int j=0;j<images.size();j++){
                            Element img = images.get(j);
                            String imgUrl = img.attr("src");
                            save(imgUrl);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }).start();
	    }
    }
	
	/**
	 * 保存图片
	 * @param url
	 * @param i
	 * @throws Exception
	 */
	static void save(String url) throws Exception {
		String fileName = url.substring(url.lastIndexOf("/"));
		String filePath = PIC_DIR + "/" + fileName;
		BufferedOutputStream out = null;
		byte[] bit = getByte(url);
		if (bit.length > 0) {
			try {
				out = new BufferedOutputStream(new FileOutputStream(filePath));
				out.write(bit);
				out.flush();
				System.out.println("图片下载成功!");
			} finally {
				if (out != null)
					out.close();
			}
		}
	}
	
	/**
	 * 获取图片字节流
	 * @param uri
	 * @return
	 * @throws Exception
	 */
	static byte[] getByte(String uri) throws Exception {
		HttpClient client = new DefaultHttpClient();
//		client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
		HttpGet get = new HttpGet(uri);
//		get.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
		try {
			HttpResponse resonse = client.execute(get);
			if (resonse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				HttpEntity entity = resonse.getEntity();
				if (entity != null) {
					return EntityUtils.toByteArray(entity);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			client.getConnectionManager().shutdown();
		}
		System.out.println("获取失败!");
		return new byte[0];
	}

	public static void main(String[] args) throws Exception {
		// 开始抓取图片
	    getPics("http://www.3lian.com/gif/more/03/0301.html");
	}
}

 

简易java爬虫 改改路径可直接运行(httpclient+jsoup)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、文章来由 本来最近任务挺多,但是今天想放松一下,正巧Bill喜欢玩英语配音,而配音都是在配音软
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成,其基
最近看了些node.js方面的知识,就像拿它来做些什么。因为自己喜欢摄影,经常上蜂鸟网,所以寻思了一
这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬
这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬
1 package parser; 2 3 import java.io.BufferedReader; 4 5 import java.io.BufferedWriter; 6 7 i
上面的中有两个方法:   private static void processNodeList(NodeList list, String keyword)
 使用 HttpClient 和 HtmlParser 实现简易爬虫   这篇文章介绍了 HtmlParser 开源包和 HttpClien
这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬
  这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫。phpquery可以非常简单地帮
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号