上午我们学习了一下网络爬虫的大概论述和介绍,了解了现在网络爬虫的情况和现状,此篇博文我们通过学习一个爬虫的例子来深入了解一下如何使用网络爬虫,让它更好的为我们做更多有意思的工作。


例子的目的:通过分析一个特定的url,下载该url路径下的所有图片,由于现在所学水平有限,这个例子中,没有对url循环爬取。
爬取工作主要有三步:
1、获取页面的源代码
2、解析源代码,找到源代码中图片标签
3、网络编程,下载图片


首先我们看一下项目的整体结构:

例子如下:

package cn.edu.lnu.crawler;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Util {
	// 地址
	private static final String URL = "http://www.tooopen.com/view/1439719.html";
	// 获取img标签正则
	private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";
	// 获取src路径的正则
	private static final String IMGSRC_REG = "[a-zA-z]+://[^\\s]*";
	// 获取html内容
	public static String getHTML(String srcUrl) throws Exception {
		URL url = new URL(srcUrl);
		URLConnection conn = url.openConnection();
		InputStream is = conn.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		String line = null;
		StringBuffer buffer = new StringBuffer();
		while ((line = br.readLine()) != null) {
			buffer.append(line);
			buffer.append("\n");
		br.close();
		isr.close();
		is.close();
		return buffer.toString();
	// 获取image url地址
	public static List<String> getImageURL(String html) {
		Matcher matcher = Pattern.compile(IMGURL_REG).matcher(html);
		List<String> list = new ArrayList<>();
		while (matcher.find()) {
			list.add(matcher.group());
		return list;
	// 获取image src地址
	public static List<String> getImageSrc(List<String> listUrl) {
		List<String> listSrc = new ArrayList<String>();
		for (String img : listUrl) {
			Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(img);
			while (matcher.find()) {
				listSrc.add(matcher.group().substring(0,
						matcher.group().length() - 1));
		return listSrc;
	// 下载图片
	private static void Download(List<String> listImgSrc) {
		try {
			// 开始时间
			Date begindate = new Date();
			for (String url : listImgSrc) {
				// 开始时间
				Date begindate2 = new Date();
				String imageName = url.substring(url.lastIndexOf("/") + 1,
						url.length());
				URL uri = new URL(url);
				InputStream in = uri.openStream();
				FileOutputStream fo = new FileOutputStream(new File(imageName));// 文件输出流
				byte[] buf = new byte[1024];
				int length = 0;
				System.out.println("开始下载:" + url);
				while ((length = in.read(buf, 0, buf.length)) != -1) {
					fo.write(buf, 0, length);
				// 关闭流
				in.close();
				fo.close();
				System.out.println(imageName + "下载完成");
				// 结束时间
				Date overdate2 = new Date();
				double time = overdate2.getTime() - begindate2.getTime();
				System.out.println("耗时:" + time / 1000 + "s");
			Date overdate = new Date();
			double time = overdate.getTime() - begindate.getTime();
			System.out.println("总耗时:" + time / 1000 + "s");
		} catch (Exception e) {
			System.out.println("下载失败");
	public static void main(String[] args) throws Exception {
		String html = getHTML(URL);
		List<String> listUrl = getImageURL(html);
		 * for(String img : listUrl){ System.out.println(img); }
		List<String> listSrc = getImageSrc(listUrl);
		 * for(String img : listSrc){ System.out.println(img); }
		Download(listSrc);
下载的结果如下图所示: 爬虫 一直python的强项,其它语言也能做,只是没有python那么方便快捷,今天正好学到 java 中了一些和网络相关的知识,就做了一个小 爬虫 。 主要功能是:爬取百度 图片 中的 图片 ,一键下载。 为了吸引大家继续看下去,先上效果图 功能就是这样,根据输入的关键字不同,自动下载不同的 图片 ,当然,这些 图片 都是从百度 图片 中爬取出来的。 随便输入一个关键字,百度 图片 就会展示出很多 图片 我们都知道,网络中的每个资源,都是有唯一确定的位置的。所以展示出来的每张 图片 ,也都有一个唯一路径。在图 import java .io.FileOutputStream; import java .io.IOException; import java .io.InputStream; import java .io.Inpu
访问后台接口网址: http://vv.video.qq.com/getinfo(低清的只要这一个就好了) http://vv.video.qq.com/getkey(高清的需要访问这个) 原理(获取低清视频,先把原理打通,高清后期有时间会更): 获取你想要下载的视频的腾讯视频页面地址(这个很容易啦,就不赘述) 此处以:https://v.qq.com/x/page/f08302y6ro...
四步带你入门 爬虫 ,爬取 图片 本人还是学生,python小白。其实很多基础还不牢固,但是对 爬虫 比较有兴趣,在这里也希望能帮助大家入门 爬虫 ,毕竟还是比较有趣。需要一些html基础,不过这个html也很 简单 。 完整代码块 import requests from lxml import etree import os if __name__ == '__main__': url = 'https://pic.netbian.com/4kdongman/' #爬取到页面源码数据 header
主要分为以下几个部分: 1. 分析网页,查看索要 爬取网页 的源代码(按F12或者CTRL+SHIFT+C),选中你想要爬取的 图片 中的任意一个,下面以 爱奇艺的首页为例,注意下图: 可以看到 图片 标签,标识属性class, 图片 的url属性src(这三个接下来会用到) 2. 读取网页的内容 代码如下: #导入两个开发库 import urllib.request
Java 爬取妹子 图片 (2020年3月) 现在开始学习 爬虫 ,发现大多数人的入门程序多是爬取美女 图片 ,感觉这似乎是一个传统,所以我也就来继续这个传统吧。这是学习技术的,不是下载 图片 的! 因为我是 Java 方向的,所以我就使用 Java 来写这个小 爬虫 程序了。 目标网址:妹子图 使用技术: Java 基础知识、HttpClient 4.x 、Jsoup 爬取目标:获取几张 图片 。 对于这种 图片 的获取,...
import java .io.BufferedReader; import java .io.InputStream; import java .io.InputStreamReader; import java .net.HttpURLConnection; https://www.dpm.org.cn/lights/royal.html(来自夜曲编程,写这篇博客是来复习的,也希望获得启发,毕竟有人在网上说过, 爬虫 也只是能爬取教过的网页。感觉 爬虫 好难啊。) 3.设置反 爬虫 通过设置headers(当然设置发 爬虫 还可以.. Spring MVC 配置报错: Error creating bean with name 'userController': Injection of resource dependencies 139390