整个爬虫是基于selenium和Python来运行的,运行需要的包

1 mysql,matplotlib,selenium

需要安装selenium火狐浏览器驱动,百度的搜寻。

整个爬虫是模块化组织的,不同功能的函数和类放在不同文件中,最后将需要配置的常量放在constant.py中

项目地址:

整个爬虫的主线程是Main.py文件,在设置好constant.py后就可以直接运行Main.py

从主线分析

Main.py

1 # /bin/python

2 # author:leozhao

3 # author@email: dhzzy88@163.com

4

5 """

6 这是整个爬虫系统的主程序

7 """

8 import numpy as np

9

10 import dataFactory

11 import plotpy

12 import sqlDeal

13 import zhilian

14 from Constant import JOB_KEY

15

16 #

17 # 启动爬虫程序

18 zhilian.spidefmain(JOB_KEY)

19

20 """

21 爬取数据结束后对数据可视化处理

22 """

23 # 从数据库读取爬取的数据

24 # 先得到的是元组name,salray,demand,welfare

25

26 value = sqlDeal.sqlselect()

27 # 工资上限,下限,平均值

28 updata = np.array([], dtype=np.int)

29 downdata = np.array([], dtype=np.int)

30 average = np.array([], dtype=np.int)

31 for item in value:

32 salray = dataFactory.SarayToInt(item[1])

33 salray.slove()

34 updata = np.append(updata, salray.up)

35 downdata = np.append(downdata, salray.down)

36 average = np.append(average, (salray.up + salray.down) / 2)

37

38 # 工资上下限

39 average.sort()

40

41 # 匹配城市信息 暂时还未实现

42

43 # 统计信息

44 # 两种图形都加载出来 方便查看

45 plotpy.plotl(average)

46 plotpy.plots(average)

47

48 print(average, average.sum())

49 print("平均工资:", average.sum() / len(average))

50 print("最高:", average.max())

51 print("最低", average.min())

52 print("职位数", len(average))

53

54 # 画图

基本是以爬虫整个执行流程来组织的

从功能文件中导入zhilian.py

1 # /bin/python

2 # author:leo

3 # author@email : dhzzy88@163.com

4 from selenium import webdriver

5 from selenium.webdriver.common.by import By

6 from selenium.webdriver.common.keys import Keys

7 from selenium.webdriver.support import expected_conditions as EC

8 from selenium.webdriver.support.ui import WebDriverWait

9

10 import sqlDeal

11 from Constant import PAGE_NUMBER

12

13

14 def init(key="JAVA"):

15 # 智联招聘的主页搜索关键字,初始化到采集页面

16 url = "https://www.zhaopin.com/"

17 opt = webdriver.FirefoxOptions()

18 opt.set_headless() #设置无头浏览器模式

19 driver = webdriver.Firefox(options=opt)

20 driver.get(url)

21 driver.find_element_by_class_name("zp-search-input").send_keys(key)

22 # driver.find_element_by_class_name(".zp-search-btn zp-blue-button").click()

23 driver.find_element_by_class_name("zp-search-input").send_keys(Keys.ENTER)

24 import time

25 time.sleep(2)

26 all = driver.window_handles

27 driver.switch_to_window(all[1])

28 url = driver.current_url

29 return url

30

31

32 class ZhiLian:

33

34 def __init__(self, key='JAVA'):

35 # 默认key:JAVA

36 indexurl = init(key)

37 self.url = indexurl

38 self.opt = webdriver.FirefoxOptions()

39 self.opt.set_headless()

40 self.driver = webdriver.Firefox(options=self.opt)

41 self.driver.get(self.url)

42

43 def job_info(self):

44

45 # 提取工作信息 可以把详情页面加载出来

46 job_names = self.driver.find_elements_by_class_name("job_title")

47 job_sarays = self.driver.find_elements_by_class_name("job_saray")

48 job_demands = self.driver.find_elements_by_class_name("job_demand")

49 job_welfares = self.driver.find_elements_by_class_name("job_welfare")

50 for job_name, job_saray, job_demand, job_welfare in zip(job_names, job_sarays, job_demands, job_welfares):

51 sqlDeal.sqldeal(str(job_name.text), str(job_saray.text), str(job_demand.text), str(job_welfare.text))

52

53 # 等待页面加载

54 print("等待页面加载")

55 WebDriverWait(self.driver, 10, ).until(

56 EC.presence_of_element_located((By.CLASS_NAME, "job_title"))

57 )

58

59 def page_next(self):

60 try:

61 self.driver.find_elements_by_class_name("btn btn-pager").click()

62 except:

63 return None

64 self.url = self.driver.current_url

65 return self.driver.current_url

66

67

68 def spidefmain(key="JAVA"):

69 ZHi = ZhiLian(key)

70 ZHi.job_info()

71 # 设定一个爬取的页数

72 page_count = 0

73 while True:

74 ZHi.job_info()

75 ZHi.job_info()

76 page_count += 1

77 if page_count == PAGE_NUMBER:

78 break

79 # 采集结束后把对象清除

80 del ZHi

81

82

83 if __name__ == '__main__':

84 spidefmain("python")

这是调用selenium模拟浏览器加载动态页面的程序,整个爬虫的核心都是围绕这个文件来进行的。

每爬取一页信息以后就把解析的数据存储到数据库里,数据库处理函数的定义放在另外一个文件里,这里只处理加载和提取信息的逻辑

将数据存入本机的mysql数据库

1 # /bin/python

2 # author:leozhao

3 # author@email :dhzzy88@163.com

4

5 import mysql.connector

6

7 from Constant import SELECT

8 from Constant import SQL_USER

9 from Constant import database

10 from Constant import password

11

12

13 def sqldeal(job_name, job_salray, job_demand, job_welfare):

14 conn = mysql.connector.connect(user=SQL_USER, password=password, database=database, use_unicode=True)

15 cursor = conn.cursor()

16 infostring = "insert into zhilian value('%s','%s','%s','%s')" % (

17 job_name, job_salray, job_demand, job_welfare) + ";"

18 cursor.execute(infostring)

19 conn.commit()

20 conn.close()

21

22

23 def sqlselect():

24 conn = mysql.connector.connect(user=SQL_USER, password=password, database=database, use_unicode=True)

25 print("连接数据库读取信息")

26 cursor = conn.cursor()

27

28 cursor.execute(SELECT)

29 values = cursor.fetchall()

30 conn.commit()

31 conn.close()

32 return values

两个函数

第一个负责存入数据

第二个负责读取数据

读取数据以后在另外的类中处理得到的数据

例如10K-20K这样的信息,为可视化做准备

# /bin/python

# author:leozhao

# author@email : dhzzy88@163.com

import matplotlib.pyplot as plt

import numpy as np

from Constant import JOB_KEY

# 线型图

def plotl(dta):

dta.sort()

print("dta", [dta])

num = len(dta)

x = np.linspace(0, num - 1, num)

print([int(da) for da in dta])

print(len(dta))

plt.figure()

line = plt.plot(x, [sum(dta) / num for i in range(num)], dta)

# plt.xlim(0, 250)

plt.title(JOB_KEY + 'Job_Info')

plt.xlabel(JOB_KEY + 'Job_Salray')

plt.ylabel('JobNumbers')

plt.show()

# 条形图

def plots(dta):

fig = plt.figure()

ax = fig.add_subplot(111)

ax.hist(dta, bins=15)

plt.title(JOB_KEY + 'Job_Info')

plt.xlabel(JOB_KEY + 'Job_Salray')

plt.ylabel('JobNumbers')

plt.show()

最后将得到的数据放入在画图程序中画图

最后计算相关数据

在爬取过程中及时将数据存入数据库,减少虚拟机内存的占比。

下面放上数据结果

上面是金融的工作的薪酬调查

下面是材料科学的薪酬调查

蓝色为平均工资。

注意在平均线以上的基本为博士和硕士的学历要求。

具体的数据处理没时间弄,有时间再做。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

招聘网python职位_Python+selenium爬取智联招聘的职位信息相关推荐

  1. 智联招聘python岗位_Python爬虫爬取智联招聘职位信息

    import urllib2 import re import xlwt '''遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!''' cl ...

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

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

  3. python爬去智联招聘网_Python爬虫爬取智联招聘(进阶版)

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 图片:Westworld Season 2 作者 王强 简介 Python追随者, ...

  4. 给大家整理了一篇Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 1 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的 ...

  5. 使用selenium爬取智联招聘

    我是一名在校大学生,这是第一次写博客,希望记录一下自己的学习过程,然后如果哪里做的不好打扰或者影响到您,可以联系我修改.删除. 哇,--弄了好久才明白咋回事.我想开头空两格写,然后发现空两格之后他就不 ...

  6. 实战案例 | Scrapy 集成Selenium爬取智联招聘数据

    人生苦短,快学Python! 初学scrapy之后,发现就是效率对比于selenium和requests快了很多,那么问题来了,如果网站设置了反爬,比如User-Agent反爬,cookie反爬,IP ...

  7. python爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

  8. Python爬虫 scrapy框架 爬取智联招聘,并把数据存入数据库,存为json格式的数据

    First:创建项目:执行下面三句命令: 1. scrapy startproject zhilianzhaopin2. cd zhilianzhaopin3.scrapy genspider zhi ...

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

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

最新文章

  1. Oracle优化07-分析及动态采样-直方图
  2. boost::mpl模块实现has_xxx相关的测试程序
  3. vue异常——template SyntaxError: string literal contains an unescaped line break
  4. linux如何运行多个硬盘,一个硬盘如何装两个Linux
  5. 计算机论文答辩注意哪些问题,计算机专业论文答辩(准备和注意事项)
  6. oracle查询用户下所有表名称
  7. Spring Boot + Oracle 处理Blob/Clob类型字段实例
  8. pdo mysql fedora_fedora编译安装php5.5
  9. 1.4补充 三态缓存(tristate buffer)与 多路复用器(Multiplexers)
  10. [LeetCode] Best Time to Buy and Sell Stock
  11. 关于c语言从入门到精通那些事
  12. matlab常微分方程2次初值问题,MATLAB求解二阶常微分方程初值问题
  13. C#写简单HTML报表
  14. php mp4 ckplayer,织梦dedecms整合添加ckplayer播放器支持flv,mp4等播放功能
  15. 提取出 Word 文档里的图片 并利用 python 批量转换格式
  16. mysql cleaned up_关于mysqld自动停止的问题
  17. 医疗对话摘要论文阅读笔记
  18. 网卡驱动收包代码分析之 page reuse
  19. Java#21(抽象与接口)
  20. TensorFlow深度学习!构建神经网络预测股票!

热门文章

  1. 英语中常见的123个中国习语
  2. 输入一个十进制数N,将它转化为R进制数输出(C语言版)
  3. AGI 通用人工智能的演变 | The Evolution of Artificial General Intelligence
  4. VSCode 画流程图插件
  5. 怎样用U盘重装Win10系统?用U盘重装Win10系统教程
  6. Python:如何显示实时爬取速度和进度条?
  7. api demo 京东商品详情_自制,简易仿京东微信小程序demo
  8. 2021年中国玻璃包装容器现状及趋势分析:玻璃包装容器营收逐年增加[图]
  9. 2019一级消防工程师考试报名条件会有专业限制吗?
  10. 金包银裹的月饼让中秋蒙羞