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

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

目录

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

网页分析

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

网页的组织结构如下:

python爬虫实例——爬取智联招聘信息_第1张图片

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

python爬虫实例——爬取智联招聘信息_第2张图片

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

  • 职位详细介绍的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
  • 导入库,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
  • 可以根据需要将url换成自己需要的网址
#正则匹配要爬取的内容
def get(html):
    #正则匹配式
    reg = re.compile(r'class="searchResultJobName">.*?(.*?).*?

(.*?).*?发布时间:(.*?).*?职责描述:(.*?)',re.S) #进行匹配 items = re.findall(reg,html) #print(items) #计算匹配到的数目(一整条记录算一个) items_length = len(items) return items,items_length

  • 正则匹配式不能忽略注意换行符和空格,.*?代替任意长的字符,如果正则匹配式写错了,程序不会报错,但匹配结果会为空。
  • 正则匹配式的书写要以在于用(.*?)代替要爬取的内容,前后要有标志性的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
  • 若怀疑正则匹配写错了,可以通过输出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'))
  • 保存结果,excel名字可以自己改,表头信息是按照爬取信息的顺序排列的
#从第2行开始写入
index = 1
#爬取信息
items,items_length = get(get_content())
#写入excel
excel_write(items,index)
#保存excel
wb.save(newTable)
  • 这是主程序

结果

python爬虫实例——爬取智联招聘信息_第3张图片
这就是运行该程序后保存的excel文件,可见内容都正确的爬取了下来。

总结

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

github代码地址

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

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

你可能感兴趣的:(爬虫)