受友人所托,写了一个爬取智联招聘信息的爬虫,与大家分享。
本文将介绍如何实现该爬虫。

目录

  • 网页分析
  • 实现代码分析
  • 结果
  • 总结
  • github代码地址

网页分析

以https://xiaoyuan.zhaopin.com/full/538/0_0_160000_1_0_0_0_1_0 为例。

网页的组织结构如下:

将网页代码保存为html文件(文件见最后链接),使用的软件是Sublime Text,我们所需的内容如下图所示:

那么我们需要爬取的内容包括(以上图为例):

  • 职位详细介绍的url:xiaoyuan.zhaopin.com/job/CC000920419J9000072500
  • 职位名称:C/C++
  • 公司名称:中国移动通信有限公司-中国移动在线服务有限公司
  • 发布时间:19小时前
  • 职责描述:1、负责图像识别算法开发、优化和硬件驱动开发调试工作;2、根据算法工程师研发结果进行底层算法模型编写、优化和API接口开发工作;3、配合硬件工程师进行硬件接口驱动开发、调试和优化工作;……

实现代码分析

# -*- coding:utf-8 -*-
import urllib.request
import urllib.parse
import re
#用来创建excel文档并写入数据
import xlwt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 导入库,xlwt是将数据写入excel时需要用到的库
#获取网页的源码
def get_content():#网址url = 'https://xiaoyuan.zhaopin.com/full/538/0_0_160000_1_0_0_0_1_0'#打开网址a = urllib.request.urlopen(url)#读取源代码并转为unicodehtml = a.read().decode('utf-8')return html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 可以根据需要将url换成自己需要的网址
#正则匹配要爬取的内容
def get(html):#正则匹配式reg = re.compile(r'class="searchResultJobName">.*?<a joburl href="//(.*?)" class="fl __ga__fullResultcampuspostname_clicksfullresultcampuspostnames_001">(.*?)</a>.*?<p class="searchResultCompanyname"><span>(.*?)</span>.*?<span>发布时间:<em>(.*?)</em></span>.*?职责描述:<span>(.*?)</span>',re.S)#进行匹配items = re.findall(reg,html)#print(items)#计算匹配到的数目(一整条记录算一个)items_length = len(items) return items,items_length
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 正则匹配式不能忽略注意换行符和空格,.*?代替任意长的字符,如果正则匹配式写错了,程序不会报错,但匹配结果会为空。
  • 正则匹配式的书写要以在于用(.*?)代替要爬取的内容,前后要有标志性的class,这样才能够匹配到正确的内容。
#爬取到的内容写入excel表格
def excel_write(items,index):#将职位信息写入excel,item为tuple元组for item in items:#共五个信息,写五列for i in range(0,5):#print item[i]#.write(行,列,数据)ws.write(index,i,item[i])#每成功写入一条就输出对应的行编号print(index)#index+1,写下一行index+=1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 若怀疑正则匹配写错了,可以通过输出items(这是所有爬取的信息)来查错。
  • 新手建议一个个匹配,匹配成功一个,再把正则匹配式拓展,写下一个匹配,这样容易查出匹配式的差错(方便调试)
#excel名称
newTable="智联招聘岗位爬虫结果.xls"
#创建excel文件,声明编码为utf-8
wb = xlwt.Workbook(encoding='utf-8')
#创建表格
ws = wb.add_sheet('sheet1')
#表头信息
headData = ['url','职位','公司','发布时间','职责描述']
#写入表头信息
for colnum in range(0, 5):ws.write(0, colnum, headData[colnum], xlwt.easyxf('font: bold on'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 保存结果,excel名字可以自己改,表头信息是按照爬取信息的顺序排列的
#从第2行开始写入
index = 1
#爬取信息
items,items_length = get(get_content())
#写入excel
excel_write(items,index)
#保存excel
wb.save(newTable)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 这是主程序

结果


这就是运行该程序后保存的excel文件,可见内容都正确的爬取了下来。

总结

本文实现的爬虫适用于搜索结果只有一页的网页,多页检索请见
http://www.cnblogs.com/Beyond-Ricky/p/6771028.html

github代码地址

完整代码文件和excel文件见:
https://github.com/IrisChu1108/Web-Crawler-for-ZhiLian-Recruit

以上就是全部内容了,有问题欢迎留言指正!大家共同进步~

(转)python爬虫实例——爬取智联招聘信息相关推荐

  1. python爬虫实例——爬取智联招聘信息

    受友人所托,写了一个爬取智联招聘信息的爬虫,与大家分享. 本文将介绍如何实现该爬虫. 目录 网页分析 实现代码分析 结果 总结 github代码地址 网页分析 以https://xiaoyuan.zh ...

  2. Python爬虫:抓取智联招聘岗位信息和要求(进阶版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  3. python+selenium爬取智联招聘信息

    python+selenium爬取智联招聘信息 需求 准备 代码 结果 需求 老板给了我一份公司名单(大概几百家如下图),让我到网上看看这些公司分别在招聘哪些岗位,通过分析他们的招聘需求大致能推断出我 ...

  4. 克服反爬虫机制爬取智联招聘网站

    一.实验内容 1.爬取网站: 智联招聘网站(https://www.zhaopin.com/) 2.网站的反爬虫机制:     在我频繁爬取智联招聘网站之后,它会出现以下文字(尽管我已经控制了爬虫的爬 ...

  5. 爬取智联招聘信息并存储

    #-*- coding: utf-8 -*- import urllib.request import os,time from bs4 import BeautifulSoup #爬取智联招聘网站的 ...

  6. Python爬虫:抓取智联招聘岗位信息和要求(基础版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  7. 爬取智联招聘信息并且存入数据库

    任务爬取智联页面的招聘信息并且存入数据库. 由于是初次尝试 这里选择了固定的页面存入数据库. 首先确定需要爬取的页面 http://sou.zhaopin.com/jobs/searchresult. ...

  8. 使用python动手爬取智联招聘信息并简单分析

    根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种 通用网络爬虫,是捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联 ...

  9. Python利用Scrapy爬取智联招聘和前程无忧的招聘数据

    爬虫起因   前面两个星期,利用周末的时间尝试和了解了一下Python爬虫,紧接着就开始用Scrapy框架做了一些小的爬虫,不过,由于最近一段时间的迷茫,和处于对职业生涯的规划.以及对市场需求的分析, ...

最新文章

  1. 7月23日 R进行层次聚类算法的继续完善
  2. 【LeetCode】0046.全排列 (递归详解)
  3. 根据控件句柄读控件在内存的数据_WPF 2020界面开发新纪元——Accordion控件、图表功能升级...
  4. 禁止 VMware Fusion 自动调整 Windows 分辨率
  5. 17.IDA-基本块的定义
  6. 微机原理换行代码_微机原理课程设计——汇编输出杨辉三角
  7. LoadRunner小技巧集锦
  8. 硬件基础知识--(10)三极管的工作原理
  9. 第三方库pod错误:ld: library not found for -lXXX
  10. django 与 mysql 勾结指南
  11. Android官方多渠道方案详解
  12. CGJ02、BD09、西安80、北京54、CGCS2000常用坐标系详解
  13. 游戏场景设计探究:冬夏季节光色模型
  14. 暴力裁员绝症员工,网易刚刚道歉!丁磊沉默,刘强东意外刷屏:说了这句硬气的话……
  15. 梁定郊:一个人行贿赠西藏、新疆狂 野之旅
  16. 第一篇:瑞吉外卖项目概述
  17. Istio 101:Service Mesh的未来将与Knative和Apahce Whisk等技术和谐共存——采访RedHat的Istio产品经理
  18. PIPE接口基本描述
  19. INSEC WORLD倒计时15天开幕!嘉宾阵容、重点议题前瞻!
  20. Linux实战技巧--文件系统操作(五)--打包压缩和解压缩(tar)

热门文章

  1. 微软认证系统工程师MCSE(院校IT课程)
  2. H5与小程序该怎么选,各自的优缺点
  3. 使用ResNet18网络实现对Cifar-100数据集分类
  4. EasyExcel 模板导入导出
  5. SSHFS--Linux快速挂载
  6. mysql 添加索引 创建索引
  7. [益智]:一个五位数乘以4,得数是这五位数倒过来,求这个五位数
  8. VaR和CVaR举例说明_笔记转载
  9. Mac安装office
  10. [19/06/06-星期四] HTML基础_文本标签、列表(有序、无序、定义)、文本格式化(单位、字体、大小写、文本修饰、间距、对齐文本)...