博客
关于我
python爬虫-抓取BOSS直聘python岗位招聘信息
阅读量:804 次
发布时间:2019-03-21

本文共 1558 字,大约阅读时间需要 5 分钟。

注:本文本内容为优化后的版本,以下内容已去除:

  • 图片链接(包含src属性)
  • 图示图片的具体链接及相关描述
  • 非核心技术描述
  • 计算机感谢语及相关请求
  • 以下是优化后的文章内容:


    最近在为了工作找资料,想了解用人单位的招聘要求,于是我尝试从boss直聘的招聘信息中获取数据作为参考。过程记录如下,仅用于个人理解和技术改进,不会用于任何商业用途。

    1. 搬运目标:抓取boss直聘招聘信息

    为了获取更多的招聘信息,需要从boss直聘的网页中提取数据。我发现,招聘信息并不是直接分布在列表页,而是分布在详情页。因此,抓取过程的核心在于如何有效地从列表页获取详情页链接,并从详情页提取有用数据。


    2. 爬虫设计:多线程抓取流程

    爬虫的设计基于以下原则,确保高效率和稳定运行:

    • 第一阶段:获取详情页链接

      通过列表页获取职位详情的URL地址。列表页存在多个页码,默认收集最多10页的数据。这部分采用多线程抓取,确保大幅提升抓取速度。

    • 第二阶段:解析详情页数据

      收到的每个详情页链接都会被解析,提取其中的招聘信息。为了提高效率,本地采用多线程处理,这样可以分别处理不同的页面。数据最终以字典格式存储到data队列中,确保数据结构化,便于后续处理。

    • 第三阶段:数据保存

      将收集到的招聘信息按照页级分组,保存为JSON文件。每一个JSON文件包含一个列表页的所有招聘信息。这种方式能够使数据分类清晰,便于日后检索。


    3. 页面请求方式:get请求与参数解析

    在爬虫过程中,发现列表页的数据获取需要使用get请求。请求参数如下:

    query=python&page=1&ka=page-1

    其中:

    • query 表示搜索词
    • page 表示页码
    • ka=page-1 为无效参数,可忽略

    通过这样的参数不同组合,可以获取不同职位的列表页面。例如,通过修改query值,可以切换到不同的职位类别。


    4. 获取详情页链接:xpath提取

    在列表页中,职位详情的链接都以a标签的形式呈现。可以通过xpath语法提取这些链接的href属性值,获得详情页的URL地址。

    例如,对于以下伪代码:

    可以用xpath表达为:

    xpath_param = '//a/@href'detail_urls = soup.find(converted_location, xpath=xpath_param)

    5. 解析详情页数据

    进入详情页后,主要内容通过公司名称、职位名称、工作地点等字段呈现。为了提取这些信息,采用xpath语法对相关div或span标签进行操作。

    值得注意的是,某些div中含有

    标签,这样的结构会妨碍文本的完整提取。因此,在获取文本时,需要提前用正则表达式剔除这些empty tags。


    6. 数据存储:JSON格式保存

    提取完成的数据以字典形式存储到队列中,并通过for循环批量处理。每完成一个列表页的抓取,就将数据按页分组,存储为独立的JSON文件。

    以下为JSON示例:

    {  "页码": 1,  "职位列表": [    {      "公司名称": "XXX科技",      "职位名称": "iOS开发者",      "工作地点": "北京"    },    {      "公司名称": "XX开源",      "职位名称": "前端工程师",      "工作地点": "上海"    }  ]}

    7. 完善与反防

    为了避免因爬取速度过快被封IP,本地修改了爬虫的速率设置。具体而言,将多线程改为单线程,并在一定循环间隔后启动爬取任务。


    以上就是完整的抓取流程设计。虽然看起来有点复杂,但通过合理的搭配和优化,整个过程可以实现自动化数据抓取。这也是为什么我在技术社区发表的类似文章,虽基于相同逻辑,却呈现出不同的表述方式。


    转载地址:http://cydrz.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
    查看>>
    NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
    查看>>