哈?试着爬一下

作者: 小尘哥 | 来源:发表于2024-10-11 11:07 被阅读0次

有些网页的内容想取到本地使用,但是一行一行复制又太麻烦,本着重复劳动均能机械化的思想,那就想办法爬一下。

注:在进行网页爬取时,我们需要遵守网站的robots.txt协议,避免对网站造成过大的访问压力。同时,我们也需要注意数据的版权问题,尊重原创作品和作者的权益。

爬取的思路无非就是先获取url+参数,再看返回的数据结构(html或者json或者其他格式),再通过解析得到自己想要的数据。如果返回json就很简单了,直接json转换就可以了,以下以爬取简书首页文章标题为例,提供两种解析返回html的办法。

  • 方式1:采用hutool的正则匹配工具类
  • 方式2:使用jsoup进行dom解析

1、依赖引入

         <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.32</version>
        </dependency>
       <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.15.4</version>
        </dependency>

2、爬取代码实现

public class GrabDemo {

    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(GrabDemo.class);
        //需要爬取的url,有时候可能需要带参数或者是post请求,可以通过F12查看浏览器进行分析
        String grabUrl = "https://www.jianshu.com/";
        String content = HttpUtil.get(grabUrl);

        //方式一,通过正则直接匹配
        logger.info("开始使用第一种方式获取title");
        String reg = "<a class=\"title\" target=\"_blank\" href=\"(.*?)\">(.*?)</a>";
        List<String> titles =  ReUtil.findAll(reg, content, 2);
        titles.forEach(System.out::println);
        logger.info("使用第一种方式获取title结束,共获取到{}条记录",titles.size());


        logger.info("-----------------------我是分割线----------------");

        //方式二,通过jsoup解析dom
        logger.info("开始使用第二种方式获取title");
        Document document = Jsoup.parse(content);
        Elements elements = document.getElementsByAttributeValue("class","title").select("a");
        List<String> titles2 = elements.stream().map(Element::text).toList();
        titles2.forEach(System.out::println);
        logger.info("使用第二种方式获取title结束,共获取到{}条记录",titles2.size());
    }

}

3、爬取结果

10:40:21.139 [main] INFO com.mos.simple.http.GrabDemo -- 开始使用第一种方式获取title
节俭
抖音增粉技巧全解析:顺应趋势巧用抖音直播,增加有效粉丝粘性
跳水冠军也爱古风?全红婵簪花汉服妆造引热议!
南京之行01 | 瞻园的景色真美
10:40:21.158 [main] INFO com.mos.simple.http.GrabDemo -- 使用第一种方式获取title结束,共获取到4条记录
10:40:21.160 [main] INFO com.mos.simple.http.GrabDemo -- -----------------------我是分割线----------------
10:40:21.161 [main] INFO com.mos.simple.http.GrabDemo -- 开始使用第二种方式获取title
节俭
抖音增粉技巧全解析:顺应趋势巧用抖音直播,增加有效粉丝粘性
跳水冠军也爱古风?全红婵簪花汉服妆造引热议!
南京之行01 | 瞻园的景色真美
10:40:21.284 [main] INFO com.mos.simple.http.GrabDemo -- 使用第二种方式获取title结束,共获取到4条记录

4、其他说明

  • 毕竟爬取别人数据可能会给别人造成困扰,建议学习使用。
  • 有些网站有反扒机制,比如频繁请求出验证码、IP限制等等,见招拆招即可。

相关文章

  • 爬香山哈

    妈妈: 今天宾宾带我爬山,是香山噢,听说我没去过香山,宾宾就赶紧挑选了霜降节气之后的周六去,而且这天是重阳...

  • 疗愈是必然的,因为爱就在那里

    《都挺好》这个剧的热点,我也来试着蹭一蹭。有各种观点哈,我来试着罗列一下各种标题:《所有的偏爱都要付出代价》,侧重...

  • 用Python教你爬取墙外的数据

    终于想开始爬自己想爬的网站了。于是就试着爬P站试试手。 我爬的图的目标网址是:http://www.pixiv.n...

  • 愿意

    一只毛毛虫再爬,爬呀爬, 一直都在爬,别急哈! 总有一天你也会变成美丽蝴蝶。 一只小蜗牛在爬,爬呀爬, 一直都在爬...

  • 陪伴日志 第52天 阿弥陀佛

    一 攀爬 姑姑让中午去给看工人装家具 眯了一会 醒来看看窗台栏杆 试着爬一下 不穿鞋脚痛死 转战阳台 阳台比窗户栏...

  • 理想被懒惰打败

    原本打算这个月攒稿,每天3000字,攒到五月份下旬,去晋江开个号,试着去爬一下晋江的新晋榜。 可是...

  • 艾生

    (艾玛,太羞涩了,试着写了一下,不喜勿喷哈) 1惊变 深夜10:45 艾生静静站在白色栏杆前,俯瞰着面前这座豪华得...

  • 倒立

    文/明日之月 昨晚尝试了一下倒立,将瑜伽垫铺在离墙几厘米的地方,双手打开撑在垫子上,再试着用脚往墙上爬,慢慢的抬高...

  • python爬虫之百度贴吧

    最近又尝试着爬取了百度贴吧,发现新增的几个反爬点,故来做下记录。 爬取百度贴吧大致流程为: 1 - 构造url,h...

  • 折腾scrapy折腾了一整天

    想学python编程,就试着用scrapy框架去爬一个新闻网站,起初挺顺利,很容易爬去普通的http网站,但当我试...

网友评论

    本文标题:哈?试着爬一下

    本文链接:https://www.haomeiwen.com/subject/qwegrjtx.html