一个简单的网络爬虫-从网上爬取美女图片

CrawlerPicture.java 文件

package com.lym.crawlerDemo;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

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

import com.lym.mode.Picture;

/**
 * 从  http://m.qqba.com/ 爬取美女图片
 * @author Administrator
 *
 */
public class CrawlerPicture {

	public final static int STARTPAGE = 301;
	public final static int ENDPAGE = 500;//爬取的页面数量

	/**
	 * 获取图片的src和alt属性值
	 * @return
	 * @throws IOException
	 */
	public static List<Picture> getPictureUrl() throws IOException{
		int number = 1;
		List<Picture> pics = new ArrayList<Picture>();//存储获取到的所有图片的URL地址
		for (int i = STARTPAGE; i < ENDPAGE; i++) {
			String url = "http://m.qqba.com/people/list/"+i+".htm";
			Document doc = null;
			doc = Jsoup.connect(url).get();		//获取页面文档
			Elements divList = doc.body().select("div.image-cell");
			for (int j = 0; j < divList.size(); j++) {
				Elements imgList = divList.get(j).select("img");//一个网页内所有的img标签
				for (int k = 0; k < imgList.size(); k++) {
					Picture pic = new Picture();
					pic.setId(number++);
					pic.setSrc(imgList.get(k).attr("src"));
					pic.setAlt(imgList.get(k).attr("alt"));

					pics.add(pic);
				}
			}
		}
		return pics;
	}

	/**
	 * 获取图片输入流
	 * @param picUrl  图片的URL地址
	 * @return
	 * @throws IOException
	 */
	public static InputStream getPictureInputStream(String picUrl) throws IOException{
		URL url = new URL(picUrl);
		DataInputStream dis = new DataInputStream(url.openStream());//获取图片的输入流
		return dis;
	}

	/**
	 * 保存图片到本地磁盘中
	 * @param number 图片编号
	 * @throws IOException
	 */
	public static void savePicture(InputStream in, Picture pic) throws IOException{
		String newImgUrl = "D:/picture/"+pic.getAlt()+"--"+pic.getId()+".jpg";//图片在磁盘上的存储路径
		FileOutputStream fos = new FileOutputStream(new File(newImgUrl));
		byte[] buf = new byte[1024];
		int len = -1;
		while( (len = in.read(buf)) >0){
			fos.write(buf, 0, len);
		}
		fos.close();
	}

	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			List<Picture> pics = getPictureUrl();
			System.out.println("图片正在下载...");
			for (int i = 0; i < pics.size(); i++) {
				Picture pic = pics.get(i);
				String picUrl = pic.getSrc();
				InputStream in = getPictureInputStream(picUrl);
				savePicture(in, pic);
				in.close();
			}
			System.out.println("下载完成!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Picture.java文件

package com.lym.mode;

public class Picture {

	/**
	 * 图片编号
	 */
	private int id;
	/**
	 * 图片地址
	 */
	private String src;
	/**
	 * 图片说明信息
	 */
	private String alt;

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSrc() {
		return src;
	}
	public void setSrc(String src) {
		this.src = src;
	}
	public String getAlt() {
		return alt;
	}
	public void setAlt(String alt) {
		this.alt = alt;
	}
	@Override
	public String toString() {
		return "Picture [id=" + id + ", src=" + src + ", alt=" + alt + "]";
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 15:29:41

一个简单的网络爬虫-从网上爬取美女图片的相关文章

python爬虫爬取美女图片

python 爬虫爬取美女图片 #coding=utf-8 import urllib import re import os import time import threading def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImgUrl(html,src): srcre = re.compile(src) srclist = re.findall(srcre,html)

Scrapy爬取美女图片第三集 代理ip(上) (原创)

首先说一声,让大家久等了.本来打算520那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复了一些bug(现在肯定有人会说果然是单身狗). 好了,废话不多说,咱们进入今天的主题.上两篇 Scrapy爬取美女图片 的文章,咱们讲解了scrapy的用法.可是就在最近,有热心的朋友对我说之前的程序无法爬取到图片,我猜应该是煎蛋网加入了反爬虫机制.所以今天讲解的就是突破反爬虫机制的上篇 代理

Scrapy爬取美女图片 (原创)

有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用python爬取慕课网的视频,是根据爬虫的机制,自己手工定制的,感觉没有那么高大上,所以我最近玩了玩 python中强大的爬虫框架Scrapy. Scrapy是一个用 Python 写的 Crawler Framework ,简单轻巧,并且非常方便.Scrapy 使用 Twisted 这个异步网络库来处理

Scrapy爬取美女图片续集 (原创)

上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scrapy官方文档的过程中,发现Scrapy自身实现了图片和文件的下载功能,不需要咱们之前自己实现图片的下载(不过原理都一样). 在官方文档中,我们可以看到下面一些话:Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines .

也写一个简单的网络爬虫

引子 在cnblogs也混了许久,不过碍于平日工作太忙,一篇随笔也没有写过.最近经常感觉到自己曾经积累过的经验逐步的丢失,于是开通了博客,主要是记录一下自己在业余时间里玩的一些东西. 缘起 言归正传.某次在在某高校网站闲逛,看到了一些有趣的东西想要保存起来,但是却分散在各个页面,难以下手.使用baidu,google却有无法避免的搜索到此站点之外的内容.于是就想如果有一个爬虫,可以抓取指定域名的某些感兴趣的内容,不是很好.在网上简单搜索了一下,简单的都不满意,功能强大的又太复杂,就想自己写一个.

福利贴——爬取美女图片的Java爬虫小程序代码

自己做的一个Java爬虫小程序 废话不多说,先上图. 文件夹命名是用标签缩写,如果大家看得不顺眼可以等下载完成后手动改一下,比如像有强迫症的我一样... 这是挂了一个晚上下载的总大小,不过还有很多因为一些问题没有遍历下载到,而且会产生很多空文件,最下面我附带了一个递归删除空文件夹的小程序代码. 接下来是文件夹内部~ 图片存放位置默认为d:\picture,可在程序中更改,main函数的开头就是,有注释.爬取的网站为http://www.mmonly.cc/,大家有更好的资源网站可以私我. 爬虫源

python爬虫初学之:爬取网页图片

#!/usr/bin/env python3.5 # -*-coding:utf-8 -*- """ 作者:MR RaoJL 日期:'Sun Dec 25 12:28:08 2016' 用途:爬 www.aitaotu.com/guonei 网站的图片地址 运行环境:Python3.5(widows或linux都可以)主要在linux下测试的 现有的问题:爬取速度太慢 初学者,问题估计太多 """ from itertools import ch

Python 爬取美女图片,分目录多级存储

最近有个需求:下载https://mm.meiji2.com/网站的图片. 所以简单研究了一下爬虫. 在此整理一下结果,一为自己记录,二给后人一些方向. 爬取结果如图: 整体研究周期 2-3 天,看完之后,在加上看的时候或多或少也会自己搜到一些其他知识. 顺着看下来,应该会对爬虫技术有一个初步的认识. 大致的步骤: 分析页面,编写爬虫规则 下载图片,如果有分页,则分页 多页爬取,并且分目录保存到本地,多级存储. 应对反爬虫 以上就是学习的时候,看到的一些资料. 然后贴出一篇我自己写的,爬取的时候

Scrapy爬取美女图片第三集 代理ip(下)

这是我的公众号获取原创保护的首篇文章,原创的肯定将支持我继续前行.现在写这篇文章的时间是晚上11:30,写完就回寝室休息了,希望更多的朋友与我一起同行(当然需要一个善良的妹子的救济). 好了,废话不多说,咱们进入今天的主题.上一篇咱们讲解了代理ip上篇,本篇咱们继续讲解代理ip.这一篇是上一篇的扩展和优化,主要的改动是使用scrapy来进行爬取代理ip,同时演示在scrapy框架中怎么使用mongodb数据库,最后使用多线程批量验证代理ip的合理性,大大加快了速度. 这次我选择的依然是http: