这两天,心血来潮又把前几天的爬取招聘信息程序丰富了一下,是对爬取到的信息再处理以及分类保存。

具体功能:

将全部信息保存成矩阵形式,去除无用信息,并在当前目录下生成文件夹并此文件夹下把信息分类保存成.csv格式

#删除除"公司规模": "20人以下", "20-99人"; "最低学历": "博士","大专"; "经验": "3-5年","5-10年", "10年以上"的情况

根据公司性质分类保存信息。

具体问题及解决方法:

1、筛选数据

利用Dataframe筛选数据

df = df[(df.经验 != '3-5年') & (df.经验 !='5-10年') & (df.经验 !='10年以上') & (df.最低学历 !='博士') & (df.最低学历 !='大专') & (df.公司规模 != '20人以下')]

df_pri = df[df.公司性质.isin(['民营'])]:选择公司性质为 '民营' 的对象

2、保存数据

利用os模块,path = os.getcwd()获取当前目录;os.mkdir(r'{}'.format(str(city)+str(job)))  自动生成文件夹并命名

df_com.to_csv()保存成csv格式

具体代码:

# -*- coding: utf-8 -*-
"""
Created on Wed Jun  7 09:21:52 2017@author: qiu
"""
'''
@智联招聘职位搜索与数据获取
@拉勾网 专注于互联网招聘的网站:https://www.lagou.com/
@拉勾网 招聘的公司较少,且大部分需要有经验的公司
@拉勾网 查找限制选择性强
@BOSS直聘 查找限制选择性强 对象大众化 http://www.zhipin.com
@猎聘 更专业的招聘网站 有专门面向学生的招聘通道 https://campus.liepin.com/
@应届生网 页面布局太烂,不建议爬取。不过有专门针对应届生的招聘会论坛等信息,确实不错 http://www.yingjiesheng.com/
@由于拉钩和猎聘职位较少,而且可以满足高精确查找,这里只提供网址,自行搜索。
***********************@智联招聘职位搜索与数据获取***************************
'''import urllib
from urllib.parse import *
from bs4 import BeautifulSoup
import string
import random
import pandas as pd
import osheaders=["Mozilla/5.0 (Windows NT 6.1; Win64; rv:27.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36""Mozilla/5.0 (Windows NT 10.0; WOW64; rv:27.0) Gecko/20100101 Firfox/27.0""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36""Mozilla/5.0 (Windows NT 10.0; WOW64; rv:10.0) Gecko/20100101 Firfox/10.0""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/21.0.1180.110 Safari/537.36""Mozilla/5.0 (X11; Ubuntu; Linux i686 rv:10.0) Gecko/20100101 Firfox/27.0""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/34.0.1838.2 Safari/537.36""Mozilla/5.0 (X11; Ubuntu; Linux i686 rv:27.0) Gecko/20100101 Firfox/27.0""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"]
def get_content(url,headsers):'''@url:需要登录的网址@headers:模拟的登陆的终端*********************模拟登陆获取网址********************'''random_header = random.choice(headers)req = urllib.request.Request(url)req.add_header("User-Agent",random_header)req.add_header("Get",url)req.add_header("Host","sou.zhaopin.com")req.add_header("refer","http://sou.zhaopin.com/")html = urllib.request.urlopen(req)contents = html.read()#判断输出内容contents是否是字节格式if isinstance(contents,bytes):#转成字符串格式contents=contents.decode('utf-8')else:print('输出格式正确,可以直接输出')
##输出的是字节格式,需要将字节格式解码转成’utf-8‘return (contents)def get_content1(url,headsers):'''@url:需要登录的网址@headers:模拟的登陆的终端*********************模拟登陆获取网址********************'''random_header = random.choice(headers)req = urllib.request.Request(url)req.add_header("User-Agent",random_header)req.add_header("Get",url)req.add_header("Host","jobs.zhaopin.com")req.add_header("refer","http://sou.zhaopin.com/jobs/searchresult.ashx")html = urllib.request.urlopen(req)contents = html.read()#判断输出内容contents是否是字节格式if isinstance(contents,bytes):#转成字符串格式contents=contents.decode('utf-8')else:print('输出格式正确,可以直接输出')
##输出的是字节格式,需要将字节格式解码转成’utf-8‘return (contents)    def get_links_from(job, city, page):'''@job:工作名称@city:网址中城市名称@page:表示第几页信息@urls:所有列表的超链接,即子页网址****************此网站需要模拟登陆**********************返回全部子网页地址'''urls=[]for i in range(page):url = "http://sou.zhaopin.com/jobs/searchresult.ashx?jl={}&kw={}&p={}".format(str(city),str(job),i) url = quote(url, safe=string.printable)info = get_content(url,headers)soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml”link_urls = soup.select('td.zwmc a')for url in link_urls:      urls.append(url.get('href'))return (urls)#url = "http://s.yingjiesheng.com/result.jsp?keyword=%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98&city=217&start=0&period=0&sort=score&jobtype=1"
#get_links_from('南京','数据挖掘', 5)
def get_link_info(url):'''@爬取的地址*****************获取此网站的有用信息并保存成字典形式****************'''    info = get_content1(url,headers)soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml”occ_name = soup.select('div.fixed-inner-box h1')[0]com_name = soup.select('div.fixed-inner-box h2')[0]com_url = soup.select('div.inner-left.fl h2 a')[0]welfare = soup.select('div.welfare-tab-box')[0]wages = soup.select('div.terminalpage-left strong')[0]date = soup.select('div.terminalpage-left strong')[2]exper = soup.select('div.terminalpage-left strong')[4]num = soup.select('div.terminalpage-left strong')[6]area = soup.select('div.terminalpage-left strong')[1]nature = soup.select('div.terminalpage-left strong')[3]Edu = soup.select('div.terminalpage-left strong')[5]cate = soup.select('div.terminalpage-left strong')[7]com_scale = soup.select('ul.terminal-ul.clearfix li strong')[8]com_nature = soup.select('ul.terminal-ul.clearfix li strong')[9]com_cate = soup.select('ul.terminal-ul.clearfix li strong')[10]com_address = soup.select('ul.terminal-ul.clearfix li strong')[11]data = {"拉勾网":'https://www.lagou.com/', "猎聘":"https://campus.liepin.com/","应届生":"http://www.yingjiesheng.com/","网址":url,"工作名称":occ_name.text.strip(),"公司名称":com_name.text,"公司网址":com_url.get('href'),"福利":welfare.text.strip(),"月工资":wages.text.strip(),"发布日期":date.text.strip(),"经验":exper.text.strip(),"人数":num.text.strip(),"工作地点":area.text.strip(),"工作性质":nature.text.strip(),"最低学历":Edu.text.strip(),"职位类别":cate.text.strip(),"公司规模":com_scale.text.strip(),"公司性质":com_nature.text.strip(),"公司行业":com_cate.text.strip(),"公司地址":com_address.text.strip()}return (data)
#url = "http://jobs.zhaopin.com/145913042250065.htm"
#get_link_info(url)def get_links_all_info(job, city, page):'''@job:工作名称@city:网址中城市名称@page:表示前几页信息将全部信息保存成矩阵形式,去除无用信息,并在当前目录下生成文件夹并此文件夹下把信息分类保存成.csv格式'''urls = get_links_from(job, city, page)df = pd.DataFrame({"网址":[],"工作名称":[],"公司名称":[],"公司网址":[],"福利":[],"月工资":[],"发布日期":[],"经验":[],"人数":[],"工作地点":[],"工作性质":[],"最低学历":[],"职位类别":[],"公司规模":[],"公司性质":[],"公司行业":[],"公司地址":[],"拉勾网":[], "猎聘":[],"应届生":[]})links = []for url in urls:if "xiaoyuan" in url:links.append(url)columns = ['校园招聘地址']labeled_df = pd.DataFrame(columns=columns, data=links)#labeled_df.to_csv('{}\{}校园招聘{}地址.csv'.format(str(city)+str(job),str(city),str(job)))else:data = get_link_info(url)        #print (data)df = df.append(data,ignore_index=True)return dfdef remove_useless_info(df): '''#删除除"公司规模": "20人以下", "20-99人"; "最低学历": "博士","大专"; "经验": "3-5年","5-10年", "10年以上"的情况@Dataframe筛选数据 http://jingyan.baidu.com/article/0eb457e508b6d303f0a90572.html@df: 以矩阵形式存储爬取到的数据定义一个列表,存储指定列类型,删除需要删除的类型,利用isin()函数保留剩下的数据 ''''''**************公司规模问题****************************最低学历问题****************************经验问题**************'''df = df[(df.经验 != '3-5年') & (df.经验 !='5-10年') & (df.经验 !='10年以上') & (df.最低学历 !='博士') & (df.最低学历 !='大专') & (df.公司规模 != '20人以下')]return df
def save_info(job, city, page,df):'''**************公司性质问题**************'''#print (list(df.公司性质))'''@df_pri = df[df.公司性质.isin('民营')]@error:only list-like objects are allowed to be passed to isin(), you passed a [str]'''df_pri = df[df.公司性质.isin(['民营'])]df_com = df[df.公司性质.isin(['上市公司'])]df_sta = df[df.公司性质.isin(['国企'])]df_fore = df[df.公司性质.isin(['外商独资'])]df_joint = df[df.公司性质.isin(['合资'])]df_Gov = df[df.公司性质.isin(['事业单位'])]df_stock = df[df.公司性质.isin(['股份制企业'])]#    path = "E:\研究生阶段学习\编程语言\python\python爬虫\python源\招聘资料\智联招聘\job"#获取当前路径path = os.getcwd()#自动生成文件夹并命名os.mkdir(r'{}'.format(str(city)+str(job)))df_pri.to_csv('{}\{}{}——民营.csv'.format(str(city)+str(job),str(city),str(job)))df_com.to_csv('{}\{}{}——上市公司.csv'.format(str(city)+str(job),str(city),str(job)))df_sta.to_csv('{}\{}{}——国企.csv'.format(str(city)+str(job),str(city),str(job)))df_fore.to_csv('{}\{}{}——外商独资.csv'.format(str(city)+str(job),str(city),str(job)))df_joint.to_csv('{}\{}{}——合资.csv'.format(str(city)+str(job),str(city),str(job)))df_Gov.to_csv('{}\{}{}——事业单位.csv'.format(str(city)+str(job),str(city),str(job)))df_stock.to_csv('{}\{}{}——股份制企业.csv'.format(str(city)+str(job),str(city),str(job)))def get_recuite_info(job, city, page):'''获取招聘信息'''df = get_links_all_info(job, city, page)df_cleaned = remove_useless_info(df)save_info(job, city, page, df_cleaned)
'''
*********************获取招聘信息***************************
'''
get_recuite_info('嵌入式开发', '南京', 1)

总结:

1、这次主要是对爬取到的数据进行处理,这一块在机器学习问题中是数据预处理的内容。具体可以自行查找之一方面内容,还包括matplotlib的画图内容,可以实现数据可视化,很方便获取有用信息。

2、这一块应该还会再丰富,比如根据工资情况画图等等。但这一块只是为了学习python,为学习机器学习打基础用的。

3、有啥问题可以留言,写博客的目的,记录学习内容,更多的是供他人参考以及相互交流学习,CSDN上高手太多了,希望能得到他们评论指教。

python3小项目——爬取智联招聘信息(二)相关推荐

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

    受友人所托,写了一个爬取智联招聘信息的爬虫,与大家分享. 本文将介绍如何实现该爬虫. 目录 网页分析 实现代码分析 结果 总结 github代码地址 网页分析 以https://xiaoyuan.zh ...

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

    受友人所托,写了一个爬取智联招聘信息的爬虫,与大家分享. 本文将介绍如何实现该爬虫. 目录 网页分析 实现代码分析 结果 总结 github代码地址 网页分析 以https://xiaoyuan.zh ...

  3. python+selenium爬取智联招聘信息

    python+selenium爬取智联招聘信息 需求 准备 代码 结果 需求 老板给了我一份公司名单(大概几百家如下图),让我到网上看看这些公司分别在招聘哪些岗位,通过分析他们的招聘需求大致能推断出我 ...

  4. 爬取智联招聘信息并存储

    #-*- coding: utf-8 -*- import urllib.request import os,time from bs4 import BeautifulSoup #爬取智联招聘网站的 ...

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

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

  6. 使用python动手爬取智联招聘信息并简单分析

    根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种 通用网络爬虫,是捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联 ...

  7. 爬虫之多线程爬取智联招聘信息

    前言: 本文爬取对象为智联搜索大数据岗位内容信息,并将信息保存到本地. 案例中使用的HttpClientUtils工具类参考上一篇文章https://blog.csdn.net/qq_15076569 ...

  8. python爬取智联招聘信息

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

  9. python学习笔记爬虫——爬取智联招聘信息

    目的:自己输入指定地方,指定职业,起始页数,程序会自动打印页面的所有信息. 实现过程:这次程序的代码跟以往的都不一样,这次也是我第一次使用面向对象式编程,并且并不是分析网页代码,分析json字符串得到 ...

最新文章

  1. 【驱动】内核打印级别设置
  2. 习题10-3 递归实现指数函数 (15 分)
  3. mysql 一条sql update多条记录
  4. 5 分钟上手 ECharts
  5. 数据结构----单源最短路径Dijkstra
  6. python学习第19天
  7. python 日志输出变量_python中记录打印的log模块logging的用法实例
  8. python自动化_python自动化办公?学这些就够用了
  9. defaultlib library conflicts with use of other libs; use /NODEFAULTLIB:library
  10. 4键电子手表说明书_飞猪II控制台简体中文说明书
  11. npm 下载为什么很慢?解决方案来了
  12. Java--排序算法
  13. 微信公众平台、微信开放平台的关系
  14. 孩子沉迷游戏,家长该怎么办?
  15. 海南计算机管理科员工资,海南公务员级别工资一览表
  16. github配置SSH keys
  17. 写latex 遇到bib中参考文献 的俄文人名(类似于带有声调的拼音字母)如何转义?
  18. MySQL日志双一配置分析实战
  19. 介绍一个优质的学习分类网站-学吧导航
  20. python爬虫58同城(多个信息一次爬取)

热门文章

  1. 《动手学机器人学》第四节(上):位姿描述
  2. jQuery----经典表单应用
  3. Win10 .chm文件无法打开解决方案
  4. java 新手入门电子书_Java基础入门指导(适合所有初学者).pdf
  5. Segment Anything CV界的GPT—prompt-based里程碑式研究成果
  6. 【干货】阿里资深无线技术专家孙兵谈闲鱼社区技术架构演进
  7. VMware的配置及ubuntu10.04 tftp 与嵌入式开发板的连接设置
  8. total command关闭按钮如何修改为最小化
  9. lua和go混合调用调试记录支持跨平台(通过C和LuaJit进行实现)
  10. 大搜车:云上多地域高可用消息系统的构建