【爬虫】爬取当当网的图书信息

本文介绍了如何利用关键字搜索,通过Jsoup解析网页,抓取DangDang平台的商品信息,并将数据存储到MySQL数据库的过程。设计思路包括URL拼接、获取总页数、数据解析和存储等关键步骤。
摘要由CSDN通过智能技术生成


一、设计思路

首先,获取页面的总数,for循环从1到页码最大值,每次爬取一页,将需要的信息从页面中提取出来,最后将爬到的信息存入数据库

1、根据关键字查询

在这里插入图片描述
通过参数传入关键字,然后再进行URL拼接即可

    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("缺少参数!");
            System.exit(0);
        }
        for (String keyWord : args) {
            new DangDangSpider(keyWord).run();
        }
    }
public DangDangSpider(String keyWord) {
        this.url = Data.baseURL + keyWord;
    }

2、获取总页数

在这里插入图片描述

    private int getTotalPageNumber() {
        int n = 1;
        try {
            Document document = Jsoup.parse(new URL(this.url), 3000);
            Element ul = document.getElementsByAttributeValue("name", "Fy").get(0);
            Elements li_list = ul.getElementsByTag("li");
            String totalPageNumber = li_list.get(li_list.size() - 3).getElementsByTag("a").eq(0).text();
            n = Integer.parseInt(totalPageNumber);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return n;
    }

3、解析页面中的数据

在这里插入图片描述

    private void parseData(String finalURL) throws IOException {
        Document document = Jsoup.parse(new URL(finalURL), 3000);
        Element element = document.getElementById("component_59");
        Elements elements = element.getElementsByTag("li");
        List<Book> books = new ArrayList<>();
        for (Element e : elements) {
            String bookName = e.getElementsByTag("a").eq(0).attr("title").trim();
            Double price = Data.string2Double(e.getElementsByAttributeValue("class", "search_now_price").eq(0).text());
            String bookAuthor = Data.array2String(e.getElementsByAttributeValue("name", "itemlist-author").eachText());
            Book book = new Book();
            book.setName(bookName);
            book.setPrice(price);
            book.setAuthor(bookAuthor);
            System.out.println(book);
            books.add(book);
        }
        saveData(books);
    }

4、数据存储

数据库选用的是MySQL,常规的JDBC操作即可

在这里插入图片描述

二、运行结果

在这里插入图片描述

三、项目源代码

— 源代码 —

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值