Python3+requsts+正则+MySQL 爬取赶集网招聘信息

1. 前言

本次爬虫使用:

  • Python3
  • requsts 请求
  • 正则解析
  • MySQL 存储

2. 爬取结果示例

时间:2018年12月25日,每个类别分别爬取 1 个分页,共获取:2673条数据。(运气好,一次运行完成,IP没有被限制)
Python3+requsts+正则+MySQL 爬取赶集网招聘信息

3. 运行须知

  1. 运行前确保MySQL中已创建相应数据库、表
  2. 运行过程中很可能报错退出,最可能的原因就是访问网站过多,IP被限制,需要验证,手动使用浏览器访问赶集网解除验证即可----有时候爬取几千条也不会被限制,有时刚爬取就被限制。(可以使用代理池更换IP实现)
  3. 如果报错后重新运行,最好删除数据库,再新建—避免上次运行保留到数据库的信息重复爬取。

4. 代码解析

共包括 5 个文件:

  1. config.py
    存储配置信息、全局变量
  2. ganjiDB.sql
    创建数据库、表代码(运行爬虫之前复制该文件内容,在MySQL中运行)
  3. mysql.py
    python与MySQL的连接,通过该文件中的类MySQL(),将数据存入到MySQL。该文件包含一个类、三个方法:初始化、插入数据、查询数据。
  4. run.py
    爬虫运行文件(命令:python3 run.py 即可启动爬虫)
  5. spider.py
    爬虫核心代码,包括:请求首页HTML、获取类别URL、获取工作URL、正则解析、存入MySQL等。

spider.py核心思想:

本次爬虫以成都地区为例:
则 BASE_URL = http://cd.ganji.com
代码步骤可大致分为:

  1. 爬取首页HTML源码(BASE_URL ),根据HTML正则解析出类别地址、名称存入表 types_url。
    下图为解析的类别,其中最后 “其他职位” 不做解析,舍弃:
    Python3+requsts+正则+MySQL 爬取赶集网招聘信息

  2. 获取types_url表内容,请求每行记录的 url 提取HTML源码,根据源码使用正则提取每个工作的url、名称并存入数据表 jobs_url。
    下图为提取的工作:
    Python3+requsts+正则+MySQL 爬取赶集网招聘信息

  3. 获取 jobs_url表内容,请求每行记录的 url 提取HTML源码,根据源码使用正则解析每个工作的详细信息。
    下图为解析的工作信息:
    Python3+requsts+正则+MySQL 爬取赶集网招聘信息

代码:

GitHub:https://github.com/GYT0313/studySpider/tree/master/GanJi

完!