用python抓取智联招聘信息并存入excel

tags:python 智联招聘导出excel


引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步作出调整。建议不要看到身边的人涨了工资就盲目的心动。一般来说跳槽后要熟悉新的环境会浪费不少时间,如果现在的工作在氛围和自身进步上还可以接受,其他比如待遇方面可以和公司协调解决。

本文参考了yaoyefengchen的博客:文章链接,并进行了地域搜索优化和将存储方式由cvs改成大家常用的excel。下面进入正文

先说一下大概流程:
在智联职位搜索页面上选好自己的搜索条件后,发现链接地址为:

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&kw=php高级工程师&sm=0&re=2006&isfilter=1&p=1&sf=10001&st=15000

分析链接中的参数如下(过滤条件可以选择不写),并构造出请求的数据,header的设置只要可以访问网页即可。

paras = {'jl': city,         # 搜索城市'kw': keyword,      # 搜索关键词'isadv': 0,         # 是否打开更详细搜索选项'isfilter': 1,      # 是否对结果过滤'p': page,          # 页数're': region        # region的缩写,地区,2005代表海淀}# sf=10001&st=15000这两个是我筛选的工资区间,如果有这个需求可以自己添加参数。url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' + urlencode(paras)

yaoyefengchen用的是正则匹配出职位,薪资,公司等信息,并没有提供具体地域(比如海淀还是朝阳)对应的region。我后来是用的xpath提取出了北京的各个地域组成字典,直接输入地区的汉字就可以了。如下:

# 取搜索页面得到地域的对应数字 比如海淀对应2005
def parseHtmlToGetRegion(regionAddress):url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&sm=0&isfilter=1&p=1&re=2006'# 获取代理ip地址 只取前五页html= getHtml(url)regionId = html.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/div[1]/div[2]/a/@href')region = html.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/div[1]/div[2]/a/text()')#解析一下region中的编号去掉无效内容regionList = {}for i,regionHref in enumerate(regionId):if i==0:continueregionList[region[i]] = regionId[i][-4::]return regionList.get(regionAddress)

另外,cvs格式在用一些工具比如excel打开的时候经常出现乱码,需要转化或者下载一些专用的软件。我觉得很不方便,所以直接存成了excel格式,不得不说,在存数据到excel文件这方面,python简直比php容易太多了。

# 存入excle
def write_xls_file(filename, headers, jobs):table = xlwt.Workbook(encoding='utf8')table_page = table.add_sheet('jobs')for i,header in enumerate(headers):table_page.write(0,i,header)for j,items in enumerate(jobs,start = 1):for q,item in items.items():table_page.write(j, q, item)table.save(filename)

完整代码如下,可以直接使用。别忘了保存文章最下面的user_agents.py文件

#-*- coding: utf-8 -*-
'''
Created on 2018-05-7
@author: Vinter_he
'''
import re
import requests
import xlwt
from tqdm import tqdm
from urllib.parse import urlencode
from requests.exceptions import RequestException
from lxml import etree
import user_agents
import random
import datetimedef get_one_page(city, keyword, region, page):'''获取网页html内容并返回'''paras = {'jl': city,         # 搜索城市'kw': keyword,      # 搜索关键词'isadv': 0,         # 是否打开更详细搜索选项'isfilter': 1,      # 是否对结果过滤'p': page,          # 页数're': region        # region的缩写,地区,2005代表海淀}headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','Host': 'sou.zhaopin.com','Referer': 'https://www.zhaopin.com/','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9'}url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' + urlencode(paras)try:# 获取网页内容,返回html数据response = requests.get(url, headers=headers)# 通过状态码判断是否获取成功if response.status_code == 200:return response.textreturn Noneexcept RequestException as e:return Nonedef parse_one_page(html):'''解析HTML代码,提取有用信息并返回'''# 正则表达式进行解析pattern = re.compile('<a style=.*? target="_blank">(.*?)</a>.*?'        # 匹配职位信息'<td class="gsmc"><a href="(.*?)" target="_blank">(.*?)</a>.*?'     # 匹配公司网址和公司名称'<td class="zwyx">(.*?)</td>', re.S)                                # 匹配月薪# 匹配所有符合条件的内容items = re.findall(pattern, html)for item in items:job_name = item[0]job_name = job_name.replace('<b>', '')job_name = job_name.replace('</b>', '')yield {0: job_name,1: item[1],2: item[2],3: item[3]}# 存入excle
def write_xls_file(filename, headers, jobs):table = xlwt.Workbook(encoding='utf8')table_page = table.add_sheet('jobs')for i,header in enumerate(headers):table_page.write(0,i,header)for j,items in enumerate(jobs,start = 1):for q,item in items.items():table_page.write(j, q, item)table.save(filename)def main(city, keyword, region, pages):'''主函数'''filename = '智联_' +datetime.date.today().strftime('%Y-%m-%d')+ city + '_' + keyword + '.xls'headers = ['job', 'website', 'company', 'salary']jobs = []for i in tqdm(range(pages)):'''获取该页中所有职位信息,写入xls文件'''region = parseHtmlToGetRegion(region)html = get_one_page(city, keyword, region, i)items = parse_one_page(html)for item in items:jobs.append(item)write_xls_file(filename, headers, jobs)def getHtml(url):response = requests.get(url=url, headers={'User-Agent':random.choice(user_agents.user_agents)}, timeout=10).texthtml = etree.HTML(response)return html# 取搜索页面得到地域的对应数字 比如海淀对应2005
def parseHtmlToGetRegion(regionAddress):url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&sm=0&isfilter=1&p=1&re=2006'# 获取代理ip地址 只取前五页html= getHtml(url)regionId = html.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/div[1]/div[2]/a/@href')region = html.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/div[1]/div[2]/a/text()')#解析一下region中的编号去掉无效内容regionList = {}for i,regionHref in enumerate(regionId):if i==0:continueregionList[region[i]] = regionId[i][-4::]return regionList.get(regionAddress)if __name__ == '__main__':main('北京', 'php工程师', '朝阳', 10)

下面是和以前一样的user_agents.py文件 这个文件以后就不给了大家可以自己保存一下备用

#!/usr/bin/python
# -*- coding:utf-8 -*-
'''
Created on 2018-04-27@author: Vinter_he
'''user_agents = ['Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11','Opera/9.25 (Windows NT 5.1; U; en)','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)','Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12','Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9'"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]

用python抓取智联招聘信息并存入excel相关推荐

  1. Python爬虫项目:抓取智联招聘信息

    来自https://mp.weixin.qq.com/s/0SzLGqv2p0-IWSN3r8bOHA ''' Python爬虫之五:抓取智联招聘基础版 该文件运行后会产生一个代码,保存在这个Pyth ...

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

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

  3. python爬取智联招聘信息

    import random import re from time import sleep import requests from tqdm import tqdm import user_age ...

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

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

  5. 北京python爬虫招聘信息_Python爬虫:抓取智联招聘岗位信息和要求(基础版)

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

  6. python 爬虫学习:抓取智联招聘网站职位信息(二)

    在第一篇文章(python 爬虫学习:抓取智联招聘网站职位信息(一))中,我们介绍了爬取智联招聘网站上基于岗位关键字,及地区进行搜索的岗位信息,并对爬取到的岗位工资数据进行统计并生成直方图展示:同时进 ...

  7. python爬虫招聘-Python爬虫抓取智联招聘(基础版)

    原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...

  8. Python | 爬虫抓取智联招聘(基础版)

    对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪工作的面试做准备?今天我们来抓取智联招聘的招聘信息,助你换工作成功! 运行平台: Windows   Python版本: ...

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

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

最新文章

  1. html漂浮广告随页面移动代码,JS漂浮广告代码,慢慢漂移的广告JS代码
  2. 【 C 】动态内存分配案例分析
  3. 【PC工具】更新!windows图片文字识别软件,天若OCR免费文字识别软件
  4. JavaCC首页、文档和下载 - 语法分析生成器 - 开源中国社区
  5. 扫描文件夹_按下苹果手机这个键,立马变身成为扫描仪,你不会还不知道吧?...
  6. OpenCV序列化功能的实例(附完整代码)
  7. OpenCV学习笔记七-创建滑动条
  8. 2008_11_05_星期三
  9. 梦想中的网络安全和内部协作
  10. 韦东山衔接班——4.4_构建根文件系统之构建根文件系统
  11. Linux内核机器ID,linux-如何强制内核重新读取/重新初始化PCI设备ID?
  12. 使用过的MySql查询语句[待续...]
  13. JavaEE系统架构师学习路线
  14. Oracle数据泵的使用
  15. 如何将所有音乐从 iPhone传输到Mac?
  16. BZOJ 2006 NOI2010 超级钢琴 划分树+堆
  17. RTSP RTMP HLS HTTP全功能流媒体播放器SkeyeExPlayer开发计划
  18. 服务器打完补丁无法进入系统,win7系统电脑更新补丁后无法进入系统怎么办
  19. coldfusion_ColdFusion破坏神话
  20. Word Averaging模型做文本分类 稳定效果好模型简单

热门文章

  1. Css图片批量下载小工具--saveimg1.5
  2. PHP时间戳实现倒计时,JavaScript | 时间戳实现倒计时定时器
  3. 华为p30应用软件开启速度测试,华为P30Pro速度测试,与iPhoneXS Max的差距,果粉无法淡定了!...
  4. Python 位运算
  5. N-ary Tree n叉树学习
  6. 【Tree-easy】589. N-ary Tree Preorder Traversal 前序遍历N叉树
  7. php写html就错误500,php – 简单的html dom解析器返回错误500
  8. riak数据库php7,Riak (Engine)
  9. 这些前后端性能指标,面试一问我就懵了
  10. 分布式数据库或成为新增量