Java爬虫-WebMagic爬取博客图片(好色龍的網路觀察日誌)

WebMagic爬取博客图片

最近在学习java爬虫,接触到WebMagic框架,正好拿我喜爱的博客来练习,希望龙哥(博主)不要责备我~~
博客链接: 好色龍的網路觀察日誌 ,超级有趣的翻译漫画,持续了七年之久,惊叹!访问需要科学上网


不多说,上过程。

  1. 创建Maven项目(我用的是IDEA),在pom.xml中添加WebMagic依赖:
    `

        <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-core</artifactId>
        <version>0.7.3</version>
    </dependency>
    <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-extension</artifactId>
        <version>0.7.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency> `
    

    而如何使用WebMagic请访问其官网,上有中文文档。中文文档上手就是快啊

  2. 揣摩要爬取博客的HTML代码。我仅想爬取他的雜七雜八短篇漫畫翻譯中的图片,那么我们找到相关列表页面,看到文章列表在<div class = "blog-posts">之下,那么我们只要将页面中这部分连接提取出来就行了。
    接着我们看每篇单独文章的链接以编写正则表达式匹配。容易发现博文链接格式是这样的https://hornydragon.blogspot.com/2018/11/1014.html,其中2018,11,1014是可变的,分别是发布的年份,月份,博文编号。那就可以编写正则表达式:https://hornydragon\.blogspot\.com/\d{4}/\d{2}/\d{1,5}[\w]*\.html。(也许会想为什么最后是四位数字,还需要加[\w]*?因为我发现有时候博主推送的博文会在最后有test等字符跟着,这是以防出现的万一)在这里插入图片描述

  3. 现在一个列表页我们已经能获得上面全部文章的链接了,那么重复这个过程,将其他列表页都弄进来就结束了噻,正当我点击看到第二页列表页的时候,发现有些不对劲。第一列表页的链接是这样的:https://hornydragon.blogspot.com/search/label/%E9%9B%9C%E4%B8%83%E9%9B%9C%E5%85%AB%E7%9F%AD%E7%AF%87%E6%BC%AB%E7%95%AB%E7%BF%BB%E8%AD%AF?&max-results=30,第二页却是这样的:https://hornydragon.blogspot.com/search/label/%E9%9B%9C%E4%B8%83%E9%9B%9C%E5%85%AB%E7%9F%AD%E7%AF%87%E6%BC%AB%E7%95%AB%E7%BF%BB%E8%AD%AF?updated-max=2018-06-05T17%3A24%3A00%2B08%3A00&max-results=30#PageNo=2。多了两部分,PageNo还好弄,updated-max跟日期就不好弄了,因为每推送一篇博文都会刷新这个日期。最大的问题其实还不是在这,WebMagic爬取是利用表达式筛选URL,这样我们可以找到页脚上的下一页标签,不断地筛选并获取下一列表页的链接就行了。当我想琢磨下一页链接的套路以编写正则表达式时,发现这博客下一页链接使用JS函数捣鼓出来跳转的࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值