Python项目:爬取IT互联网高薪热门职位数据并进行可视化分析 您所在的位置:网站首页 爬虫数据分析师招聘 Python项目:爬取IT互联网高薪热门职位数据并进行可视化分析

Python项目:爬取IT互联网高薪热门职位数据并进行可视化分析

2024-07-14 06:06| 来源: 网络整理| 查看: 265

作者CSDN:进击的西西弗斯 本文链接:https://blog.csdn.net/qq_42216093/article/details/120943532 版权声明:本文为作者原创文章,未经作者同意不得转载

1.项目说明以及流程概要

爬取网站:智联招聘(https://sou.zhaopin.com/)

开发环境:Python3.8(Pycharm编辑器),全流程通过代码实现

爬取时间:2021/10/24 晚上9:13 的实时招聘信息数据

爬取职位及城市:共9个职位,java开发、前端开发、算法、数据挖掘、数据开发、数据分析、硬件开发、运维、产品经理;由于本人在上海工作,因此本次爬取的城市限定为上海

主要用到的python库:requests、BeautifulSoup、pandas、matplotlib、seaborn

项目说明:本人初入互联网行业工作,为了更深入地了解互联网行业各类职位的相关信息,我使用python在智联招聘网站爬取了9大热门职位的全部招聘信息数据,包括薪资、公司名称以及规模、学历要求、技能要求、工作经验要求等数据,对数据清洗和整理后进行可视化分析,得到了薪资分布、不同学历占比、技能词频图等结果,目的是能从繁杂的招聘数据中直观地看到有价值的信息。

2.爬取网站数据并整理为csv 流程概要:

根据url和相关参数获取网页的html,对html解析后正则提取我们需要的标签信息,最终以dataframe二维表形式保存为csv文件,**其中要注意:**智联招聘在未登陆状态下无法爬取职位数据,于是我们可以先登陆网站,然后在浏览器开发者模式下找到需求头信息(Request Headers),复制下来后通过copyheaders库转换为字典后加入requests请求的headers参数中。(建议不要直接使用我的代码,虽然可以运行但运行多了可能会被网站检测出爬虫并被反爬!)

代码:(附注释) # version : python3.8 # -*- coding : utf-8 -*- """ Created on : 2021/10/24 5:13 下午 @Author : liudong @Software: PyCharm """ import requests import re from copyheaders import headers_raw_to_dict from bs4 import BeautifulSoup import pandas as pd # 根据url和参数获取网页的HTML: def get_html(url, params): my_headers = b''' Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cache-Control: max-age=0 Connection: keep-alive Cookie: x-zp-client-id=448f2b96-6b3a-48e3-e912-e6c8dd73e6cb; sts_deviceid=178832cf3f2680-0b20242883a4a9-6618207c-1296000-178832cf3f3780; Hm_lvt_38ba284938d5eddca645bb5e02a02006=1624877846; urlfrom2=121114584; adfcid2=www.google.com; adfbid2=0; FSSBBIl1UgzbN7NO=5QbLj2_L5kKhv8gnuJa.E1._8RKksG1y5Nt4FRrSajQ7PKGJ8CcWopqTuOLay__ida1esO2ud4AdXKKDI69j9UA; locationInfo_search={%22code%22:%22538%22%2C%22name%22:%22%E4%B8%8A%E6%B5%B7%22%2C%22message%22:%22%E5%8C%B9%E9%85%8D%E5%88%B0%E5%B8%82%E7%BA%A7%E7%BC%96%E7%A0%81%22}; selectCity_search=538; ssxmod_itna=7qGxnDRG0=KGqAKGHKiQRSDQwKfkKqYteb87Dla=xA5D8D6DQeGTb0NpYeYietdigMWPqKYG4iteiFlYfPtb+4OEdD84i7DKqibDCqD1D3qDkbCYxiinDCeDIDWeDiDG+8D0hXl7DjQNXZKkULfBNDz4X2/4UgQDDHfG024dLRIqIgFA+5HYbDbxp9DB6rxBQ/Iqj6znUDgMTTibwbj8DoGiP=fifwn7Dq0YoYCA44fDx=bb4ee2hso7DYFDqojR8DG4xL2iD===; ssxmod_itna2=7qGxnDRG0=KGqAKGHKiQRSDQwKfkKqYteb8D61Fgj40y4rP03aKenjt6D6QMTiBeG2Yn408DewGD; urlfrom=121114584; adfcid=www.google.com; adfbid=0; sts_sg=1; sts_chnlsid=Unknown; zp_src_url=https%3A%2F%2Fwww.google.com.hk%2F; LastCity=%E4%B8%8A%E6%B5%B7; LastCity%5Fid=538; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221071739258%22%2C%22first_id%22%3A%22178832cf3bd20f-0be4af1633ae3d-6618207c-1296000-178832cf3be4b8%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fwww.google.com%2F%22%7D%2C%22%24device_id%22%3A%22178832cf3bd20f-0be4af1633ae3d-6618207c-1296000-178832cf3be4b8%22%7D; sts_sid=17cb28d33471536-08566241781bac-123b6650-1296000-17cb28d33481380; at=903f2985908c40b08a5f94a31f3ce3dc; rt=87ef0544ac924abaac9cfcddf07c9ea0; sts_evtseq=10; acw_tc=2760828b16350838102677392e6fd947253c8ceb8c6d07bf99f3246521c8ce; d4d6cd0b4a19fa72b8cc377185129bb7=843b9b24-97dd-410b-a554-cd40e82436ac; FSSBBIl1UgzbN7NP=53UYbECmTRPWqqqmZ7NMd1qzBpaBQmALgVHgfOadtkb30AZnPQLBe7tq5ITop.QpE0UAFelJGyiJUw4o9YrykPPl30M59JtVADHIlrqeL2qh7oUUJiEIrkb73XNoNod5EeRNheLNmf8wvi8F3yFwLBqPZ7.6CapWrCtXpfI4HapeY7.pC.nlnkSsRFcOC30dWn.1t5.wXdIYcgGeYZbRTyH2cYoRKwMJTnAAuuC6LHa9Ba4GAk0Ro6G8LN58ssLfFaIH8rfFDzN9_YTitsrxNXt; zpfe_probe_token=12c91e38s94ee345139aa73548b089ce0f18 Host: sou.zhaopin.com Referer: https://www.zhaopin.com/ sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "macOS" Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: same-origin Sec-Fetch-User: ?1 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 ''' # b:将字符串转换为二进制; 三引号:为输入多行字符串,即包含\n的字符串 my_headers = headers_raw_to_dict(my_headers) # 把复制的浏览器需求头转化为字典形式 req = requests.get(url, headers=my_headers, params=params) req.encoding = req.apparent_encoding html = req.text return html # 输入url和城市编号,获取由所有职位信息的html标签的字符串组成的列表: def get_html_list(url, position): html_list = list() for i in range(1, 20): params = {'jl': '538', 'kw': position, 'p': str(i)} html = get_html(url, params) soup = BeautifulSoup(html, 'html.parser') html_list += soup.find_all(name='a', attrs={'class': 'joblist-box__iteminfo iteminfo'}) # 参数:名称,属性(化成字典) for i in range(len(html_list)): # soup.find_all()得到的列表元素是特殊类型 html_list[i] = str(html_list[i]) return html_list # 根据上面的HTML标签列表,把每个职位信息的有效数据提取出来,保存csv文件: def get_csv(html_list): city, specific_position, company_name, company_size, company_type, salary, education, ability, experience = ([] for i in range(9)) # 多变量一次赋值 for i in html_list: if re.search( '(.*?) (.*?) (.*?)', i): s = re.search( '(.*?) (.*?) (.*?)', i).group(1) city.append(s) s = re.search( '(.*?) (.*?) (.*?)', i).group(2) experience.append(s) s = re.search( '(.*?) (.*?) (.*?)', i).group(3) education.append(s) else: city.append(' ') experience.append(' ') education.append(' ') if re.search('', i): s = re.search('', i).group(1) specific_position.append(s) else: specific_position.append(' ') if re.search('', i): s = re.search('', i).group(1) company_name.append(s) else: company_name.append(' ') if re.search( '(.*?) (.*?) ', i): s = re.search( '(.*?) (.*?) ', i).group(1) company_type.append(s) s = re.search( '(.*?) (.*?) ', i).group(2) company_size.append(s) else: company_type.append(' ') company_size.append(' ') if re.search('

([\s\S]*?)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有