java爬虫实战--1.爬取天气和图片链接

2 篇文章 0 订阅

一.前言

在上一篇中我们学习了Jsoup,下面我们来实践一下,爬取一下天气信息和图片链接

二.爬取天气

我们要爬取的网站是中国天气网天气网,通过分析可以知道,它是每一个城市对应一个编码,然后查询的时候在get请求中拼接编码信息,下面我们以新乡为例,新乡的编码为:

101180301

我们可以先把所有的城市信息和对应编码信息放在一个字符串数组里,然后通过我们的输入来遍历该数组找到对应的编码,去拼接字符串

我们可以看到中国天气网中天气的信息:

我们要的就是这一部分,我们查看该部分:

城市和对应编码的信息我放在CSDN的资源目录里了,有需要的可以去下载,下面我们以新乡来演示一下:

1.创建城市常量类

public class WeatherConsts {
    /**
     * 所有城市的天气代号
     */
    public static final String[] ALL_CITIES = {
            "海淀","101010200",
            "朝阳","101010300",
            "顺义","101010400",
            "怀柔","101010500",
            ............
            ............
}

2.创建天气工具类

public class WeatherUtils {


    public static String getWeather(String city){

        String code = null;
        //找到城市对应的编码

            for (int i = 0; i < WeatherConsts.ALL_CITIES.length; i += 2) {
                if (WeatherConsts.ALL_CITIES[i].equals(city)) {
                    code = WeatherConsts.ALL_CITIES[i + 1];
                    String res = toGetWeather(code, city);
                    return  res;
                }
            }

            return "没有该城市信息!";

    }


    private static String toGetWeather(String code,String city){
        //构建请求路径
        String url = "http://www.weather.com.cn/weather/" + code + ".shtml";

        Document document = null;
        //发送请求
        try {
            document = Jsoup.parse(new URL(url),3000);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //获取<div id="7d"/> 的部分
        Element element = document.getElementById("7d");

        //获取ul
        Elements ul = element.getElementsByClass("t clearfix");
        //获取ul下的lis
        Elements lis = ul.select("li");



        StringBuilder sb = new StringBuilder();


        for (Element li : lis) {

            //获取日期
            String date = li.getElementsByTag("h1").text();
            //获取天气
            String weather = li.getElementsByClass("wea").eq(0).text();
            //获取温度
            String temperature = li.getElementsByClass("tem").eq(0).text().replace("/","~");
            //获取风向
            String wind = li.select("span[title]").attr("title");
            //获取风速级别
            String windGrade = li.getElementsByClass("win").eq(0).text();
            //拼接字符串
            sb.append(date).append(": ").append(weather).append(": ").append(temperature).append(": ")
                    .append(wind).append(": ").append(windGrade).append("\r\n");
        }

        return city+"天气如下:\r\n"+sb;
    }
}

注意:我们要拼接的链接为:

http://www.weather.com.cn/weather/101180301.shtml

3.运行程序

  public static void main(String[] args) {

        String weather = WeatherUtils.getWeather("新乡");

        System.out.println(weather);

    }

查看运行结果:

新乡天气如下:
14日(今天): 晴: 13℃: 西风: 3-4级
15日(明天): 晴: 27℃~13℃: 西风: <3级转3-4级
16日(后天): 晴: 23℃~12℃: 东北风: 3-4级转<3级
17日(周二): 阴转小雨: 25℃~14℃: 南风: 3-4级转<3级
18日(周三): 小雨: 20℃~15℃: 南风: <3级转3-4级
19日(周四): 多云转晴: 22℃~13℃: 东北风: 3-4级
20日(周五): 晴: 20℃~8℃: 西南风: <3级转3-4级


进程已结束,退出代码0

成功获取到了天气信息! 

三.爬取图片链接

下面我们再来爬取一下图片的链接:

我们以该网站为爬取目标:柠檬皮时尚资讯|汇集来自互联网的美女图片和时尚新闻资讯 | 柠檬皮美女资讯站

我们要爬取的是分类为丝袜的美女图片,我们先来看一下:

 该分类链接为:

https://www.cybesx.com/siwa/

 我们先看一下页面结构:

 主页面相当于是每个文章的a链接,然后点一个才能进去看到具体的内容,

该主页面的结构为:

 我们可以看到h2对应有该文章的标题,以及该文章的页面链接

然后我们点进去一个具体的文章页面:

 可以看到,该页面所有的图片都为一个一个<p>标签,然后p标签中有图片的链接,我们要爬的就是该链接

下面,我们来分析一下:

2.ImgUtils类

我们可以通过Map<String,List<String>>的集合来存放,键为文章的标题,值为每个文章中的图片链接集合,以下是java代码:

public class ImgUtils {

    //从https://www.cybesx.com/siwa/上爬


    public static Map<String, List<String>> getGirlsImages() throws IOException {

        Map<String,List<String>> imgMap = new HashMap<>();



        String url = "https://www.cybesx.com/siwa/";

        Document document = null;

        try {
            document = Jsoup.parse(new URL(url), 3000);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }


        Elements articles = document.getElementsByTag("article");

        for (Element article : articles) {
            //获取美女的标题
            Elements h2 = article.select("h2");
            String title = h2.eq(0).text();
            String href = h2.select("a").attr("href");


            Document subDoc = Jsoup.parse(new URL(href), 3000);

            Elements imgs = subDoc.select("img[decoding]");

            List<String> subImgList = new ArrayList<>();

            for (Element img : imgs) {
                String src = img.attr("src");
                subImgList.add(src);
            }

            imgMap.put(title,subImgList);
        }

        return imgMap;

    }

 

3.运行程序

 public static void main(String[] args) throws IOException {
        Map<String, List<String>> imgMap = ImgUtils.getGirlsImages();

        imgMap.forEach((title,list)->{

            StringBuilder sb = new StringBuilder();
            sb.append("标题:").append(title).append("\r\n");

            for (String src : list) {
                sb.append(src).append("\r\n");
            }

            System.out.println(sb);
        });

 查看结果:

标题:秀人网 No.5763 利世
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-1.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-2.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-3.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-4.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-5.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-6.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-7.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-8.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5763-利世-9.jpg

标题:秀人网 No.5779 果儿
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-1.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-2.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-3.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-4.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-5.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-6.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-7.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-8.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.5779-果儿-9.jpg

标题:Sayuri Ono Swim Suit

标题:丝社 可儿的肉丝袜

标题:语画界 Vol.1103 王馨瑶
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-1.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-2.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-3.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-4.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-5.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-6.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-7.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-8.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-9.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-10.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-11.jpg
https://pic.mfpimg.com/img/2023/08/XIAOYU语画界性感模特写真Vol.1103-王馨瑶-12.jpg

标题:星颜社 Vol.182 潘娇娇
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-1.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-2.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-3.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-4.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-5.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-6.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-7.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-8.jpg
https://pic.mfpimg.com/img/2023/08/XINGYAN星颜社美女模特写真Vol.182-潘娇娇-9.jpg

标题:异思趣向 美子街头丽人
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-0.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-001.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-01.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-2.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-3.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-4.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-5.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-6.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-7.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-8.jpg
https://pic.mfpimg.com/img/2023/08/IESS异思趣向腿模丝袜美足写真美子街头丽人-9.jpg

标题:秀人网 No.7317 徐莉芝
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-1.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-2.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-3.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-4.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-5.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-6.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-7.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-8.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-9.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-10.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-11.jpg
https://pic.mfpimg.com/img/2023/08/XIUREN秀人网美媛馆美女模特写真No.7317-徐莉芝-12.jpg

等等............

4.补充内容

1.读者可以再次基础上,爬取不同的分类,例如cosplay,写真等,

2.然后可以实现一个分页功能,查询出来更多的图片链接

3.可以将这些图片链接存入数据库,来搭建自己的图片网站

感谢阅读,我们下期再见!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值