前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一起学Python】爬取前程无忧招聘信息并写入Excel

【一起学Python】爬取前程无忧招聘信息并写入Excel

作者头像
不二小段
发布2018-04-08 11:40:02
1.2K0
发布2018-04-08 11:40:02
举报
文章被收录于专栏:不二小段不二小段

说在前面:这是依旧是来自Ricky的爬虫小实战。预告一下未来的几个主要内容吧,打算重写一下微信公众号后台,然后写几篇教程;之后是有关分词、词云、情感分析的一些内容;然后也有打算研究一下小程序,坑好多,慢慢填了。

▲ ▲ ▲

作为一名Pythoner,相信大家对Python的就业前景或多或少会有一些关注。索性我们就写一个爬虫去获取一些我们需要的信息,今天我们要爬取的是前程无忧!说干就干!进入到前程无忧的官网,输入关键字“Python”,我们会得到下面的页面

我们可以看到这里罗列了”职位名”、”公司名”、”工作地点”、”薪资”、”发布时间”,那么我们就把这些信息爬取下来吧!确定了需求,下一步我们就审查元素找到我们所需信息所在的标签,再写一个正则表达式把元素筛选出来就可以了!

顺理成章得到这样一个正则表达式:

reg = re.compile(r’class=”t1 “>.? <a target=”_blank” title=”(.?)”.? <a target=”_blank” title=”(.?)”.?(.?).?(.?).? (.?)‘,re.S)

完成这关键的一步,下面写入本地就灰常简单了!还是来段代码吧!

代码语言:javascript
复制
# -*- coding:utf-8 -*-
import urllib.request
import re# 获取原码
def get_content(page):
    url = 'http://search.51job.com/list/000000,000000,0000,00,9,99,python,2,' + str(page) + '.html'
    a = urllib.request.urlopen(url)  # 打开网址
    html = a.read().decode('gbk')  # 读取源代码并转为unicode
    return html
def get(html):
    reg = re.compile(        r'class="t1 ">.*? <a target="_blank" title="(.*?)".*? <span class="t2"><a target="_blank" title="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*? <span class="t5">(.*?)</span>',
        re.S)  # 匹配换行符
    items = re.findall(reg, html)    return items
# 多页处理,下载到文件

for j in range(1, 10):
    print("正在爬取第" + str(j) + "页数据...")
    html = get_content(j)  # 调用获取网页原码
    for i in get(html):        # print(i[0],i[1],i[2],i[3],i[4])
        with open('51job.txt', 'a', encoding='utf-8') as f:
            f.write(i[0] + '\t' + i[1] + '\t' + i[2] + '\t' + i[3] + '\t' + i[4] + '\n')
            f.close()

再来一张效果图

看起来效果还不错,要是能够以表格的形式展示出来就更好了,在网上看到有的大佬直接把招聘信息写入excel表格,今天我也来试一下吧!其实也并麻烦,只需要将上面的代码稍加修改就可以了。下面贴一下代码,重要的地方会有注释。

代码语言:javascript
复制
# -*- coding:utf-8 -*-

import urllib.request
import re
import xlwt  # 用来创建excel文档并写入数据

# 获取原码

def get_content(page):
    url = 'http://search.51job.com/list/000000,000000,0000,00,9,99,python,2,' + str(page) + '.html'
    a = urllib.request.urlopen(url)  # 打开网址
    html = a.read().decode('gbk')  # 读取源代码并转为unicode
    return html
def get(html):
    reg = re.compile(        r'class="t1 ">.*? <a target="_blank" title="(.*?)".*? <span class="t2"><a target="_blank" title="(.*?)".*?<span class="t3">(.*?)</span>.*?<span class="t4">(.*?)</span>.*? <span class="t5">(.*?)</span>',
        re.S)  # 匹配换行符
    items = re.findall(reg, html)    return items
def excel_write(items, index):
    # 爬取到的内容写入excel表格
    for item in items:  # 职位信息
        for i in range(0, 5):            # print item[i]
            ws.write(index, i, item[i])  # 行,列,数据
        print(index)
        index += 1
newTable = "test.xls"  # 表格名称
wb = xlwt.Workbook(encoding='utf-8')  # 创建excel文件,声明编码
ws = wb.add_sheet('sheet1')  # 创建表格
headData = ['招聘职位', '公司', '地址', '薪资', '日期']  # 表头部信息

for colnum in range(0, 5):
    ws.write(0, colnum, headData[colnum], xlwt.easyxf('font: bold on'))  # 行,列
for each in range(1, 10):
    index = (each - 1) * 50 + 1
    excel_write(get(get_content(each)), index)
wb.save(newTable)

最后实现的效果如下图:

至此,我们的工作就已经完成了!有的朋友可能想要爬取其他工作的招聘信息,观察了一下URl可以知道修改一下关键字名称就可以了!可以定义成一个函数只需输入关键字,然后就可以自动爬取该工作的招聘信息!

条条大路通罗马,想要实现上面的效果肯定不止这一种方法,以上内容仅供参考,希望可以给有需要的朋友提供一点思路!至于代码就比较粗糙了,而本人也希望有一天能够写得一手风骚代码!还是要重申一遍,本人能力有限,文章中可能会有纰漏或者错误,也欢迎表哥表姐们前来指正!谢谢大家!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不二小段 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档