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

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

目录

网页分析

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)
    #读取源代码并转为unicode
    html = 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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值