一、场景分析
今天来爬一下我个人的博客,将我的文章标题和地址归纳到一个Excel中,方便查看。
wshanshi能有什么坏心思呢?她只是……想总结下自己文章和相关的地址而已…….
二、界面简单分析:
开发都懂得,打开调试模式。选择Elements,然后找到存放文章的盒子,如下图。
分析后发现,每个盒子对应存放一个文章相关的信息。
仔细再看,可以发现所有的article标签的class都是同一个。
哎呦,都长一样,这就好整了。通过类选择器结合标签,一下就能拿到了。
点开任意一个文章div,会发现里面里面有文章超链接,标题,描述信息。
结合此次操作的终极目标,得出了以下操作步骤。
场景也分析完了,就开搞白。
楼主将用两种方法(Python、Java)进行个人文章的数据收集。干就完事……
三、Python实现方式
示例版本:Python 3.8
安装包:requests、beautifulsoup4、pandas
库包安装命令(windows下)
1 | 复制代码pip install requests |
3.1、常用的库说明
3.1.1、Requests
什么是Requests?Requests有什么优点、缺点?
中文网地址:docs.python-requests.org/zh_CN/lates…
3.1.2、Beautiful Soup 4.4.0
说明: 是一个可以从HTML或XML文件中提取数据的Python库。
中文网地址:beautifulsoup.readthedocs.io/zh_CN/lates…
3.1.3、Pandas
说明:强大的 Python 数据分析支持库
具体使用详情认准官网happy啊,此处不多做介绍!!!
3.2、代码示例
直接贴代码:获取的文章标题、文章链接进行整合,导出到 .csv文件。
1 | python复制代码# -*- coding:UTF-8 -*- |
编码完成后,就跑起来哇。如下图所示,Run(快捷键F5)。
提示输出完毕,可查看导出的文件。
可以的,拿到数据了!!!Python方法就演示这么多(毕竟俺不擅长),下面看Java老哥。
四、Java实现方式
Java操作使用Jsoup库,实质操作Dom。
易百教程网址(友情链接):www.yiibai.com/jsoup/jsoup…
4.1、环境、库包
Jsoup Maven:
1 | xml复制代码<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> |
4.2、代码示例
定义BlogVo类
1 | typescript复制代码public class BlogVo implements Serializable { |
service接口
1 | java复制代码/** |
serviceImpl实现类
1 | ini复制代码@Override |
controller控制层
1 | java复制代码/** |
自定义注解类(Excel )
1 | java复制代码package com.wshanshi.test.entity; |
工具类(导出)
1 | ini复制代码package com.wshanshi.test.util; |
PostMan测试导出,效果如下。
哎呦,可以。
数据虽然导出了,但是发现一个问题。数据少了?之前用python取到的数据明明是九十多条。为啥这次只请求到了20多条?有点怪哦。
仔细看了下界面,原来是因为页面换为了慢加载。当你滑到最下方的时候请求分页的。
嗷嗷,原来是这样啊。不过,既然看到了接口,那就…..用postMan调下白。
我giao,这径直拿到数据了啊…..
So,还有一种方法。就是直接Http请求这个接口,把分页的条数设置大点就好了。
示例代码如下:
1 | ini复制代码public List<BlogVo> blogHttp() { |
效果如下,自己尝试哈。你懂得…….
害,就先这样吧!别学坏哈…..
本文转载自: 掘金