猫颜 发表于 2020-3-31 20:53

java爬虫

写了一福利站的爬虫
package com.maoyan.test;

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

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* @AuThor Maoyan
* @data 2020/3/31 12:30
* @version 1.0.0
*/
public class SpyderTest {
    private static HttpURLConnection conn = null;
    private static InputStream inputStream = null;
    private static BufferedInputStream bufferedInputStream = null;
    private static FileOutputStream fileOutputStream = null;
    //利用预编译正则表达式提高效率
    private static Pattern pattern = Pattern.compile("/images/\\w+");
    public static void main(String[] args) throws IOException {
            for (int i = 1;i<=5;i++) {
                //创建url
                URL url = new URL("https://gank.io/special/Girl/page/"+i);
                //创建doc对象
                Document document = Jsoup.parse(url, 20 * 1000);
                //获取img标签
                Elements imgs = document.getElementsByTag("title");
                Elements elements = document.select("a");
                for (Element e :
                        elements) {
                  String image = "第"+i+"页:"+"https://gank.io" + e.attr("style");
                  //正则表达式
                  Matcher matcher = pattern.matcher(image);
                  while (matcher.find()) {
                        System.out.println("第"+i+"页:"+"https://gank.io" +matcher.group());
                        //这里可以写成工具类
                        File file=new File("D:\\下载图片的文件夹");
                        if (!file.isDirectory()&&!file.exists()){
                            //如果文件夹不存在则创建一个文件夹
                            file.mkdirs();
                        }
                        //生成一个唯一的标记来当作图片名称
                        String filename = UUID.randomUUID().toString();
                        fileOutputStream = new FileOutputStream(file+"\\"+filename+".jpeg");
                        //建立连接
                        URL imageurl = new URL("https://gank.io" +matcher.group());
                        conn = (HttpURLConnection) imageurl.openConnection();
                        //使用GET方法
                        conn.setRequestMethod("GET");
                        //连接指定的资源
                        conn.connect();
                        //获取输入流
                        inputStream = conn.getInputStream();
                        //新建buffer缓冲流包装输入流
                        bufferedInputStream = new BufferedInputStream(inputStream);
                        //创建大小为1k的"水桶"
                        byte[] bytes = new byte;
                        //用于保存实际读取的字节数
                        int hasRead = 0;
                        //循环取水
                        System.out.println("开始下载第"+i+"页的图片");
                        while ((hasRead = inputStream.read(bytes))>0){
                            fileOutputStream.write(bytes,0,hasRead);
                        }
                        System.out.println("第"+i+"页的图片下载完成");

                        //释放资源
                        fileOutputStream.close();
                        bufferedInputStream.close();
                        inputStream.close();
                  }

                }

            }
    }
}

猫颜 发表于 2020-3-31 21:01

忘记说了,Maven要导入jsoup的依赖
<dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.1</version>
      </dependency>
好像中央仓库的jsoup有毛病,所以我是下载jar包放的本地仓库的

猫颜 发表于 2020-4-1 07:48

jc021227 发表于 2020-3-31 21:21
不会用啊楼主

额,,就创建maven项目,导入依赖,复制代码即可,或者创建一个普通项目导入jsoup的jar包也行

萧筱小 发表于 2020-3-31 21:28

哈哈哈这段代码有点东西,学到了

猫颜 发表于 2020-4-1 10:32

萧筱小 发表于 2020-3-31 21:28
哈哈哈这段代码有点东西,学到了

哈哈哈里面有些没啥用的代码忘删了,不过影响应该不大

卖菜小贩邪魅 发表于 2020-4-3 16:45

猫颜 发表于 2020-4-5 17:40

卖菜小贩邪魅 发表于 2020-4-3 16:45
图片太少了不够看!!

但是这些都是精品图片,比其他的那些图片好看多了:loveliness:

25po0 发表于 2020-4-5 18:04

楼主 这代码用什么软件运行能教下吗?

猫颜 发表于 2020-4-5 18:06

25po0 发表于 2020-4-5 18:04
楼主 这代码用什么软件运行能教下吗?

java代码啊,用java的ide就ok啦

independence 发表于 2020-4-8 16:20

python的爬虫和Java的爬虫有什么不同呢
页: [1] 2
查看完整版本: java爬虫