【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!

这篇具有很好参考价值的文章主要介绍了【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、爬取目标

大家好,我是盆子。今天这篇文章来讲解一下:使用Java爬虫爬取百度搜索结果。

首先,展示爬取的数据,如下图。

爬取结果1:

【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!

爬取结果2:

【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!

代码爬取展示:

【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!

可以看到,上面爬取了五个字段,包括

标题,原文链接地址,链接来源,简介信息,发布时间。

二、爬取分析

用到的技术栈,主要有这些

Puppeteer 网页自动化工具
Jsoup 浏览器元素解析器
Mybatis-Plus 数据库存储

2.1 网页结构分析

打开百度搜索,搜索“手机”二字,可以看到下面这样的搜索结果,我们需要爬的信息都在上面。

爬取网页元素分析1:*

*尝试去分析它的网页结构:

【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!

爬取网页元素分析2:

【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!

打开控制台F12,可以看到这个 class =“result c-container xpath-log new-pmd” 所在的 div 标签就包含我们要爬取的所有信息。

那就很简单了,我们只需要去这个div里面,将需要的元素 (字段) 信息挨个的获取即可。

同理,这个结构也就是百度搜索结果的通用结构,其他的搜索结果中,也可以通过该 class 去定位。

2.2 爬虫代码分析

首先,这是我们代码的核心依赖:

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.16.2</version>
    </dependency>

    <dependency>
        <groupId>io.github.fanyong920</groupId>
        <artifactId>jvppeteer</artifactId>
        <version>1.1.5</version>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybaits.plus.version}</version>
    </dependency>

初始化浏览器,并且打开百度搜索页

        // 初始化浏览器相关
        BrowserFetcher.downloadIfNotExist(null);
        ArrayList<String> argList = new ArrayList<>();
        LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();
        argList.add("--no-sandbox");
        argList.add("--disable-setuid-sandbox");
        System.out.println("==1=");
        Browser browser = Puppeteer.launch(options);

        // 打开页面,开爬
        Page page = browser.newPage();
        page.goTo("https://www.baidu.com/");

运行上述代码,就会弹出一个浏览器(受我们代码控制),并且打开百度搜索页面

找出页面元素,并且模拟人工搜索关键字、点击搜索按钮的操作

        // 模拟人工搜索关键字
        ElementHandle inputField = page.$("#kw");
        inputField.type("手机");
        // 模拟人工点击搜索按钮
        ElementHandle confirmSearch = page.$("#su");
        confirmSearch.click();

此时,浏览器页面已经按照你的搜索关键词开始搜索了。

用代码解析页面

    // 获取页面所有内容(HTML格式)
    String content = page.content();
    // 解析页面元素,方便后面定位
    Document document = Jsoup.parse(content);
    // 找出我们上面说的那个class所在的div标签
    Elements elements = document.getElementsByClass("result c-container xpath-log new-pmd");

    // 去 class所在的div标签中找出需要的 字段信息
    for (int i = 0; i < elements.size(); i++) {
        Element element = elements.get(i);
        String title = element.getElementsByTag("a").text();
        String keyword = StrUtil.sub(title, 0, 7);
        // 将关键词存储到队列中,后续可使用
        keyWordsQueue.offer(keyword);
        String href = element.getElementsByTag("a").attr("href");
        // ...找出其他字段
        System.out.println(dataInfo);
    }

至此,一个关键词的爬取就已经完成,如果想要继续爬取关键词,我们继续搜索其他关键词,并且重复上述操作即可。

完整代码中,还包随机等待时长、解析其他字段、保存数据、多个关键字同时爬取等关键逻辑,详见文末。

三、总结

在爬虫中,无非就是模拟人的操作过程,去做相关操作,获取数据。

通过上文介绍的方式,我们是使用一种更具有通用型的方式去爬取数据。因为Puppeteer只是代理人手工点击的方式,而拿到数据。

上述完整代码,可以留言私信我获取。

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-750269.html

到了这里,关于【教你写爬虫】用Java爬虫爬取百度搜索结果!可爬10w+条!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题

    已解决,使用进行百度搜索,然后爬取搜索结果,请求数据后,返回的是百度安全验证,网络不给力,请稍后重试。无法请求到正确数据。且尝试在header中增加Accept参数还是不行。      在学习过程中,写了一小段练习用的爬取程序,获取百度搜索后的结果,代

    2024年02月08日
    浏览(45)
  • 【爬虫实战】用python爬取微博任意关键词搜索结果、exe文件

    项目功能简介: 1.交互式配置; 2.两种任意来源(直接输入、本地文件); 3.自动翻页(无限爬取); 4.指定最大翻页页码; 5.数据保存到csv文件; 6.程序支持打包成exe文件; 7.项目操作说明文档; 一.最终效果 视频演示: 用python爬取微博搜索结果、exe文件

    2024年02月02日
    浏览(56)
  • (已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题(2023最新)

    已解决,使用进行百度搜索,然后爬取搜索结果,请求数据后,返回的是百度安全验证,网络不给力,请稍后重试。无法请求到正确数据。且尝试在header中增加Accept参数还是不行。      在学习过程中,写了一小段练习用的爬取程序,获取百度搜索后的结果,代

    2024年02月17日
    浏览(25)
  • selenium-java web自动化测试工具抓取百度搜索结果实例

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! selenium-java web自动化测试工具抓取百度搜索结果实例 这种方式抓百度

    2024年03月14日
    浏览(55)
  • 爬虫 | 【实践】百度搜索链接爬取,生成标题词云 | 以“AI换脸”为例

    目录 📚链接爬取 🐇流程梳理 🐇代码实现 🐇结果 📚词云生成 🐇代码实现 🐇结果 总体流程 是: 构建搜索链接 - 发送HTTP请求 - 解析网页内容 - 提取标题和链接 - 判断重复 - 写入csv工作表 - 保存csv工作簿 。 循环遍历 100页(暂定,实现翻页)的搜索结果,完成全部数据的

    2024年02月06日
    浏览(39)
  • 【经验分享】在百度搜索引擎中的结果中,过滤指定的网站

    系统版本:Windows 10 描述:在搜索引擎中想在结果中过滤一些指定网站,快速找到有价值的内容。 视频教程: 文字教程: 1.进入百度搜索引擎,bing搜索引擎貌似不可以。 www.baidu.com 2.搜索内容如:锐捷无线AC基础命令 -csdn,“-”这个符号是减号,0旁边那个,或者小键盘的减

    2024年02月03日
    浏览(41)
  • 百度文库爬虫(爬取需要下载券的文档)

    import requests import re import json import os session = requests.session() def fetch_url(url):     return session.get(url).content.decode(\\\'gbk\\\') def get_doc_id(url):     return re.findall(\\\'view/(.*).html\\\', url)[0] def parse_type(content):     return re.findall(r\\\"docType.*?:.*?\\\'(.*?)\\\',\\\", content)[0] def parse_title(content):     return re.fi

    2023年04月23日
    浏览(24)
  • 【爬虫案例】用Python爬取百度热搜榜数据!

    目录 一、爬取目标 二、编写爬虫代码 三、同步视频讲解 四、完整源码 您好,我是@马哥python说,一名10年程序猿。 本次爬取的目标是:百度热搜榜 分别爬取每条热搜的: 热搜标题、热搜排名、热搜指数、描述、链接地址。 下面,对页面进行分析。 经过分析,此页面有XH

    2024年02月13日
    浏览(26)
  • 【ElasticSearch】使用 Java 客户端 RestClient 实现对文档的查询操作,以及对搜索结果的排序、分页、高亮处理

    在 Elasticsearch 中,通过 RestAPI 进行 DSL 查询语句的构建通常是通过 HighLevelRestClient 中的 resource() 方法来实现的。该方法包含了查询、排序、分页、高亮等所有功能,为构建复杂的查询提供了便捷的接口。 RestAPI 中构建查询条件的核心部分是由一个名为 QueryBuilders 的工具类提供

    2024年01月16日
    浏览(49)
  • java APT原理及APT实战 - 一步步教你写ButterKnife

    Java APT 是 Java 技术设计的一个 APT 架构, APT(Annotation Processing Tool)即注解处理器,它是一种处理注解的工具,也是javac中的一个工具,用于在编译阶段未生成class之前对源码中的注解进行扫描和处理。 APT可以用来在编译时扫描和处理注解, 它可以用来获取到注解和被注解对

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包