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

1. 前言

本次爬虫使用:

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

2. 爬取结果示例

代码运行:
在这里插入图片描述
时间:2018年12月25日,每个类别分别爬取 1 个分页,共获取:2673条数据。(运气好,一次运行完成,IP没有被限制)
同时,此次代码只适用于爬取少量子页(多了会被限制IP,并且代码中设置了被限制后存入MySQL为null值,后面有详细介绍),初步分析最多设置爬取子页不应超过2页(测试过一次,遇到一次验证)才可能不会被限制IP。
目前,代码自动显示验证提醒,需要手动访问赶集网官网进行验证。
自动验证:考虑可以使用代理池(IP代理)或者Selenium(破解验证)两种方式编写升级版。博主等有时间了再写篇博客,这里先埋个坑。
顺带一提,2018年12月(时间不同,可能其验证方式不同)赶集网的验证方式为通过鼠标画一条规定的线,符合后即通过验证。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3. 运行须知

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

注:如果数据库中出现全字段为 null,即IP已经被限制,重新验证后即可继续爬取:
下图为验证前后对比:
在这里插入图片描述

更新:2019年3月

上述存入null值代码已更新,null不会存入数据库,而程序也会等待你手动验证,如下图:
在这里插入图片描述

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。
    下图为解析的类别,其中最后 “其他职位” 不做解析,舍弃:
    在这里插入图片描述

  2. 获取types_url表内容,请求每行记录的 url 提取HTML源码,根据源码使用正则提取每个工作的url、名称并存入数据表 jobs_url。
    下图为提取的工作:
    在这里插入图片描述

  3. 获取 jobs_url表内容,请求每行记录的 url 提取HTML源码,根据源码使用正则解析每个工作的详细信息。
    下图为解析的工作信息:
    在这里插入图片描述

代码:

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

完!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值