前言

Robots协议是什么?
Robot协议是国际互联网通行的道德规范,告诉人们那个可以抓,那个不可以抓,但是没有写入法律。
Robot.txt文件

爬虫的使用步骤

  1. 获取网页
    基础技术:request,urllib,selenium(模拟浏览器)。
    进阶技术:多进程多线程抓取,登录抓取,突破IP封禁,服务器抓取。
  2. 解析数据
    基础技术:re正则表达式,Beautiful Soup,lxml。
    进阶技术:解决中文乱码。
  3. 存储数据
    基础技术:存入txt文件,存入csv文件。
    进阶技术:存入MySQL数据库,存入MongoDB数据库。
  4. 入狱
    基础技术:抓取速度慢,数据量太大,IP被封禁。
    进阶技术:越狱。

看上了网页信息,怎么抓?
分析原网站是怎么获取这些数据的?哪个接口?
F12 打开控制台,查看网络请求,复制 curl 代码便于查看和执行:

1
2
3
4
5
6
7
8
9
curl "https://api.zsxq.com/v2/hashtags/48844541281228/topics?count=20" ^
-H "authority: api.zsxq.com" ^
-H "accept: application/json, text/plain, */*" ^
-H "accept-language: zh-CN,zh;q=0.9" ^
-H "cache-control: no-cache" ^
-H "origin: https://wx.zsxq.com" ^
-H "pragma: no-cache" ^
-H "referer: https://wx.zsxq.com/" ^
--compressed

用程序去调用接口 (java okhttp httpclient / python 都可以)
处理(清洗)一下数据,之后就可以写到数据库里

浏览器插件:FeHelper 前端辅助插件,推荐安装

流程
从 excel 中导入全量用户数据,判重。
easy excel
抓取写了自我介绍的同学信息,提取出用户昵称、用户唯一 id、自我介绍信息
从自我介绍中提取信息,然后写入到数据库中

EasyExcel
两种读对象的方式:

  1. 确定表头:建立对象,和表头形成映射关系
  2. 不确定表头:每一行数据映射为 Map<String, Object>

两种读取模式:

  1. 监听器:先创建监听器、在读取文件时绑定监听器。
    单独抽离处理逻辑,代码清晰易于维护;一条一条处理,适用于数据量大的场景。
  2. 同步读:无需创建监听器,一次性获取完整数据。方便简单,但是数据量大时会有等待时常,也可能内存溢出。

在pom.xml里引入依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>