python工作岗位有哪些-python能做什么职位

前言

这是我第一次写天善博客,梁勇大哥说,你应该把你平时做的东西用博客记录下来,以后也方便看,作为一名准备转行数据分析的小白,我先接触到的是网络爬虫学习,每次爬虫运行都有新的bug收获,通过不断debug,终于稍微能爬一些数据了,在此想和大家分享一下~

观察网站结构。

打开智联招聘网页,搜索数据分析师,出来很多招聘岗位,限定全国范围,从下图看出有12354个职位,一共有90页,看最后一页职位已经只是和数据分析师相关而已。

看看最后一页搜索结果

PS:小技巧,在页面下部跳转页面输入一个很大的数字,比如10000可以跳到最后一页。

右键查看网页源代码,CTRL+F搜索关键要爬取信息,如下图红框内容

页面红框上的 大数据分析师 字样竟然搜不到!!!

可能藏在json文件里了

那就再试试,搜一下 数据分析师

这下总算有了

为什么会这样呢,经过检查发现:

大和后面的数据分析中间有个标签,这是什么意思,吓得我赶紧百度了一下

设置成粗体?exm?好吧 图上确实是显示粗体

继续观察源代码,发现我想要的信息都在这(下图红框),看来不用抓包分析辣~

开始写爬虫程序

打开我最爱的pycharm(直译为py的魅力)不信你百度看

没时间解释了,快上车!

好吧,你根本不是司机,开始写代码。。。

#!/usr/bin/python

# -*- coding: utf-8 -*-

from urllib import request

import re

import os,glob

import xlwt

开头声明一下我用的utf-8国际编码

导入一些模块

PS:

1.request模块主要是会自动解码来自服务器的内容

2.re模块是写正则表达式提取信息用

3.glob是一个文件操作相关模块,用它可以查找符合自己目的的文件,类似于Windows下的文件搜索

4.os模块提供了一个统一的操作系统接口函数

5.xlwt模块读写excel文件需要

book = xlwt.Workbook()

sheet = book.add_sheet('sheet', cell_overwrite_ok=True)

path = 'D:\work'

os.chdir(path)

以上是设置路径和为最后数据写入excel文件做铺垫

result11=[]

result21=[]

result31=[]

result41=[]

result51=[]

建立五个空的列表放我要抓的最终信息

经尝试网站是gbk编码,我实际操作中发现和上图红框内中文有关,所以encode和decode总是报错,我想找个不含中文的同样网址,试试F12吧

在网页按下F12,刷新网页,观察到请求的url是下图红框中的

里面没有中文啊,复制出来访问看看。

果然一样!!!

注意到这个url最后有个p=1,这很可能是页码,我换成5试试吧

看上图,果然是这样,我试试最后第90页

果然是这样,接下来继续写代码

for k in range(1,91):

html=request.urlopen("http://sou.zhaopin/jobs/searchresult.ashx?jl=%e5%85%a8%e5%9b%bd&kw=%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90%e5%b8%88&sm=0&isfilter=0&fl=489&isadv=0&sg=aae5284f62664af8b14611bda6d68315&p="+str(k)).read() #读取网页源代码内容

pat1 = 'οnclick="submitLog.*?">(.*?)'

pat2 = '(.*?)'

pat4 = '(.*?)'

pat5 = 'target="_blank">(.*?)

result1 = repile(pat1).findall(str(html,"utf-8"))

result2 = repile(pat2).findall(str(html,"utf-8"))

result3 = repile(pat3).findall(str(html,"utf-8"))

result4 = repile(pat4).findall(str(html,"utf-8"))

result5 = repile(pat5).findall(str(html,"utf-8"))

result11.extend(result1)

result21.extend(result2)

result31.extend(result3)

result41.extend(result4)

result51.extend(result5)

range(1,91)循环爬取1~90页,p="+str(k)是为了构造循环网址(我要把90页全爬下来)

通过观察网页构造选择正则提取

每次提取一页中的所有信息不断循环存在result11~51的列表里

j = 0

for i in range(0,len(result11)):

try:

zhiwei = result11[i]

wangzhi = result21[i]

gongzi = result31[i]

gongzuodidian = result41[i]

gongsimingcheng = result51[i]

sheet.write(i + 1, j, zhiwei)

sheet.write(i + 1, j + 1, wangzhi)

sheet.write(i + 1, j + 2, gongzi)

sheet.write(i + 1, j + 3, gongzuodidian)

sheet.write(i + 1, j + 4, gongsimingcheng)

except Exception as e:

print('出现异常:' + str(e))

continue

book.save('d:\shujufenxishi.xls')

最后把列表文件循环写到本地xls文件中

结果如下图

一共5221条数据,并不是网页搜索的12354条,这活生生被吃了一半不止啊!

我又运行了一下,果然数量不一样了,好吧。。。这个问题还有待解决,麻烦各位dalao懂的话留言提醒一下小弟

这个标签看着难受,用excel做点后处理

查找替换

报错了额

原来我默认的是wps打开,换成office的excel打开之后操作结果如下

是不是好多了呢,有机会以后继续谢谢针对本数据后续的数据分析~

完整代码如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

from urllib import request

import re

import os,glob

import xlwt

book = xlwt.Workbook()

sheet = book.add_sheet('sheet', cell_overwrite_ok=True)

path = 'D:\work'

os.chdir(path)

result11=[]

result21=[]

result31=[]

result41=[]

result51=[]

for k in range(1,91):

html=request.urlopen("http://sou.zhaopin/jobs/searchresult.ashx?jl=%e5%85%a8%e5%9b%bd&kw=%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90%e5%b8%88&sm=0&isfilter=0&fl=489&isadv=0&sg=aae5284f62664af8b14611bda6d68315&p="+str(k)).read() #读取网页源代码内容

pat1 = 'οnclick="submitLog.*?">(.*?)'

pat2 = '(.*?)'

pat4 = '(.*?)'

pat5 = 'target="_blank">(.*?)

#pat6 = '(.*?)'

#pat7 = 'target="_blank">(.*?)'

result1 = repile(pat1).findall(str(html,"utf-8"))

result2 = repile(pat2).findall(str(html,"utf-8"))

result3 = repile(pat3).findall(str(html,"utf-8"))

result4 = repile(pat4).findall(str(html,"utf-8"))

result5 = repile(pat5).findall(str(html,"utf-8"))

result11.extend(result1)

result21.extend(result2)

result31.extend(result3)

result41.extend(result4)

result51.extend(result5)

j = 0

for i in range(0,len(result11)):

try:

zhiwei = result11[i]

wangzhi = result21[i]

gongzi = result31[i]

gongzuodidian = result41[i]

gongsimingcheng = result51[i]

sheet.write(i + 1, j, zhiwei)

sheet.write(i + 1, j + 1, wangzhi)

sheet.write(i + 1, j + 2, gongzi)

sheet.write(i + 1, j + 3, gongzuodidian)

sheet.write(i + 1, j + 4, gongsimingcheng)

except Exception as e:

print('出现异常:' + str(e))

continue

book.save('d:\shujufenxishi.xls')

代码运行大概15~20second

本文章原创,未经允许,不得转载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值