Java爬虫入门(一)小白学习

  今天了解了一下爬虫技术,对于java爬虫,主要有webmagic,jsoup,httpclient。这些都需要去下载jar包,要么这个包少了,要么那个包少了很麻烦,而且网上也不好下载完整版。

  所以了解了爬虫技术思想后,利用java自带的库写了一个小程序实现从网上爬图(只能爬静态网页)。

一.分析网页源代码

 我选的是我的女神绫濑遥的图片,按F12打开网页源代码;找到图片容器。


Error

    找到图片链接

Error二.下载整个页面

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Pac1 {
	static String url1="https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&fm=index&pos=history&word=%E7%BB%AB%E6%BF%91%E9%81%A5%E5%89%A7%E7%85%A7";
    public static void main(String[] args) throws FileNotFoundException {
		File file=new File("C:\\Users\\小负子\\Pictures\\test\\123.txt");
		try{URL url2=new URL(url1);
		URLConnection con=url2.openConnection();
		BufferedReader bu=new BufferedReader(new InputStreamReader(con.getInputStream()));
		FileOutputStream fi =new FileOutputStream(file);
		BufferedWriter bf=new BufferedWriter(new OutputStreamWriter(fi));
		
		while(bu.readLine() != null) {
			String str=bu.readLine();
			bf.write(str);
			bf.flush();
		}
		bf.flush();
		bu.close();
		bf.close();
		}catch (Exception e) {
			// TODO: handle exception
		}
三.提取图片

通过正则表达式:"https://ss\\d+\\.bdstatic\\.com\\S+\\.jpg",匹配图片链接,并存储到一个set集合中。

正则表达式教程入口:http://www.runoob.com/regexp/regexp-tutorial.html

String patter="https://ss\\d+\\.bdstatic\\.com\\S+\\.jpg";
		BufferedReader bu1=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
		Pattern p = Pattern.compile(patter);
		int i=0;
		String str1=null;
		StringBuilder str2=new StringBuilder();
		HashSet<String> set=new HashSet<String>();
		try {
			while((str1=bu1.readLine())!=null) {
				str2.append(str1);
				
			}
			Matcher m = p.matcher(str2);
			while(m.find()) {
	        	m.start();
	        	set.add(m.group());
	        	i++;
			}
	        bu1.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
四.下载图片

从存储的set集合中读取图片URL并下载到本地。

先写一张下载IO类,从set集合中取一个出来就new 一个下载类。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class Matchtest {

	public Matchtest(String str1,int i) throws IOException {
		// TODO Auto-generated method stub
		File test=new File("C:\\Users\\小负子\\Pictures\\test\\绫濑遥图片");
		if(!test.exists()) {
			test.mkdir();
		}
        File file=new File("C:\\Users\\小负子\\Pictures\\test\\绫濑遥图片\\"+"第"+i+"张"+".jpg");
        URL url = null;
		try {
			url = new URL(str1);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		URLConnection con = null;
		try {
			con = url.openConnection();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 InputStream io=con.getInputStream();
		FileOutputStream fi = null;
		try {
			fi = new FileOutputStream(file);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			byte[] buf = new byte[1024];
			int len = 0;
			while((len=io.read(buf)) != -1) {
				
				fi.write(buf, 0, len);
				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		fi.close();
		io.close();
        
	}

}
set集合遍历

 Iterator<String>  it = set.iterator();
		 int cout=0;
		while(it.hasNext()) {
			cout++;
			try {
				String string=it.next().toString();
				new Matchtest(string, cout);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

成果:

Error
收工。



  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Java爬虫是一种常用的网络数据抓取工具,用于获取网站上的信息并进行处理。学习Java爬虫,最好以视频教程为辅助,有系统的讲解和示例代码能更好地帮助理解和掌握相关知识。以下是关于Java爬虫入门到精通视频下载的相关建议。 网上有很多提供Java爬虫教程的平台,包括一些知名的在线学习网站、视频教育平台以及技术社区等。在这些平台上,你可以找到很多适合不同水平的视频教程,从入门到进阶都有涵盖。 首先,你可以在这些平台上搜索关键词"Java爬虫",然后在结果中筛选出类型为视频课程的内容。浏览不同课程的介绍、评价和课时等内容,选择适合自己的教程。评价好、内容丰富,并且有系统的教学大纲和实例代码是选择的重要参考因素。 其次,由于你需要从入门到精通,所以建议选择一套连贯性强的课程,例如一个系列教程,或者一个精心设计的教学计划。这样能够确保学习的完整性,避免学习的断层和重复。 在下载视频教程前,应确保你的设备有足够的空间来存储这些视频文件,并且有可用的网络或者下载工具。很多教学平台提供视频下载的功能,你可以选择购买或者租赁这些课程的视频。另外,你也可以通过一些第三方软件或者在线工具来下载这些教程,注意选择安全可靠的资源。 在学习过程中,要多动手实践,在教学视频中的每个章节或者课时后进行相关练习。通过实际操作来加深理解和熟练相关技术。同时,要多阅读官方文档和相关书籍来弥补教学视频中没有涉及到的知识点,提升自己的编程水平。 总之,Java爬虫是一个需要系统学习和实践的技术领域。通过下载视频教程并按照教学计划逐步学习,结合实际练习和深入阅读相关资料,你将能够在Java爬虫领域逐渐达到精通的水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值