测试爬虫 爬取百度贴吧 爬取百度搜图图片

本文介绍了使用Java爬虫抓取百度贴吧斗图吧首页图片的详细过程,包括处理注释、定义爬取规则,并讨论了图片格式问题。此外,还涉及了爬取百度搜图的实现,指出Ajax请求的处理和gif图片的抓取挑战。
摘要由CSDN通过智能技术生成

测试爬取百度贴吧图片

定义爬取百度斗图吧首页的每条贴子的URL的爬取规则对象

   /**
     * 斗图吧贴子的url
     */
    SpiderFunction<Set<String>> doutubaTieZiUrl = spider -> {
   
    	// 文本爬取对象
        TextSpider textSpider = (TextSpider) spider;
        // 文本爬取规则 定位元素
        textSpider.setReg("div:t_concleafix>*>a>href>*");
        return textSpider.getData().getResult().stream()
        		// 爬取后的数据处理  因为可能存在相同引用的连接所以使用Set容器去重
                .filter(url -> (!"#".equals(url)) && (!url.contains("?")) && (url.contains("/p/")))
                .map(url -> url.startsWith("http") ? url : "https://tieba.baidu.com" + url
                ).collect(Collectors.toSet());
    };  

在寻找爬取规则过程中发现百度贴吧贴子列表页的所有内容都被注释掉了所以需要修改一下文本规则截取部分的代码

在这里插入图片描述

需要将过滤注释的部分进行处理

编写爬取每个贴子页数的爬取规则对象

   /**
     * 百度贴吧贴子的每页的url
     */
    SpiderFunction<Set<String>> doutubaTieZiPageUrl = spider -> {
   
        Set<String> urls = new HashSet<>();
        String page = spider.getUrl();
        TextSpider textSpider = (TextSpider) spider;
        // 定位总页数位置
        textSpider.setReg("li:l_reply_num>1>span>2");
        List<String> result = textSpider.getData().getResult();
        // 循环生成某个贴子的所有页面的url
        if (Lists.isValuable(result)) {
   
            String endNum = result.get(0);
            if (endNum.matches("^[0-9]+$")) {
   
                for (int i = 1; i <= Integer.parseInt(endNum); i++) {
   
                    urls.add(page + "?pn=" + i);
                }
            }
        }
        return urls;
    };

定义爬取贴子每页的每个楼层中的图片的url

  /**
     * 贴子上的每张图片的url
     */
    SpiderFunction<Set<String>> tieZiPageImgUrl = spider -> {
   
        TextSpider textSpider = (TextSpider) spider;
        textSpider.setReg("div:p_content>*>img>src>*");
        return textSpider.getData().getResult().stream()
        .map(url -> url.startsWith("http") ? url 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值