目录
- 爬虫是什么
- 为什么要用爬虫
- 爬图片
- 完整代码如下
爬虫是什么
爬虫,顾名思义就是爬行的虫子(笑死),是民间一种有名的大法术——五鬼搬运!不好意思,走错片场了。爬虫说白了就是获取数据的工具,一道自动抓取信息的程序。没错,像浏览器。
为什么要用爬虫
对啊,为什么要用爬虫呢,有浏览器不就好了。就实用而言,爬虫功能比浏览器多太多了,随便举个例子,在网上大量下载图片,图标,用爬虫简直太舒服了。好吧,这个例子举得不好,正常情况下没几个人干这事儿,但是在国内,不抢票的没几个吧,爬虫就是干这事的。
另外说一下,爬虫不只python能写,相比其他语言python简单完整些罢了,爬虫又不怎么重效率,C,JAVA,C++啥的就没什么优势了,这也说明简单才是人们所追求的。(看到句话的你,现在简单吗)
爬图片
Jsoup,是Java的HTML解析器,可以直接解析某个URL地址和HTML文本内容。Jsoup的jar包或依赖到[](Maven Repository: org.jsoup " jsoup (mvnrepository.com))下载或复制。
用idea新建一个Java项目就行了,maven项目也行。
上图,上图!
右上角file左键—>new—>Project,再按下图来或者建maven项目添加依赖就好了
随便命个名
鼠标放在项目名上右键新建文件夹,再把jar包拖进来,再右键add as Library导入。
在src(source简写)包下建包建类写程序。
在网站上,按f12看源码找到需要的东西,源码左上角箭头可快捷找左侧对应代码,图片所在父div标签class可用getElementsByClass找出。点开查看大图大差不差。
完整代码如下
代码注解齐全,不做过多解释。对了那个图片网站还行,拿来当壁纸,还是算了吧,我电脑有自带的壁纸软件,嘿嘿。
package com.jh.jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author hjh
* @date 2021/7/12 19:56
*/
public class JsoupTest {
public static void main(String[] args) throws IOException {
//下载图片命名
int count=0;
String pageUrl=null;
//根据爬取页数不同定义i的值
for (int i = 1; i < 3; i++) {
if (i==1){
pageUrl="https://pickupimage.com/cn/search.cfm";
}else{
pageUrl="https://pickupimage.com/cn/search.cfm/?kw=&id=0&sortby=random&page="+i;
}
//alt+enter 补全,抛异常
Document document = Jsoup.connect(pageUrl).get();
//根据图片所在位置定位父div标签,确定查找属性
Elements elementsByClass = document.getElementsByClass("cf-item");
//循环本页图片
for (Element element:elementsByClass){
//获取图片大图路径
String href = element.child(0).attr("href");
// System.out.println(href);
//注意:上面href的路径不全要补上对应的网页地址
Document document1 = Jsoup.connect("https://pickupimage.com" + href).get();
String attr = document1.getElementsByClass("thumb_image_wrap").get(0).child(0).child(0).attr("src");
// System.out.println(attr);
//同上
URL url=new URL("https://pickupimage.com"+attr);
HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
//由于网站不允许Java程序作为客户端进行访问,所以添加了下面这句话,设置用户代理欺骗服务器
httpURLConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//获取输入流
InputStream inputStream=httpURLConnection.getInputStream();
//新建输出流
OutputStream outputStream=new FileOutputStream("D:\\picture\\crawlerTest\\"+(++count)+".jpg");
byte[] bytes=new byte[2048];
//源码注释:If no byte is available because the stream is at the
// end of the file, the value <code>-1</code> is returned
// 如果流位于末尾没有可用字节,则返回-1,即while循环到流为空为止
int length=inputStream.read(bytes);
while(length!=-1){
outputStream.write(bytes,0,length);
//读一点写一点
length=inputStream.read(bytes);
}
//关闭流
inputStream.close();
outputStream.close();
}
}
}
}
运行成功,效果如下