最新Python爬取Boss直聘,帮你获取全国各类职业薪酬榜,面试总结和面试感想

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 购买付费的代理

为什么我跳过了说免费的代理?因为现在搞爬虫的人太多了,免费的基本早就列入各大网站的黑名单了。

所以解析到的原始数据如下:

在这里插入图片描述

先来看看python的薪酬榜:

在这里插入图片描述

看一下西安的排位,薪资平均真的好低…

代码


import requests

from bs4 import BeautifulSoup

import csv

import random

import time

import argparse

from pyecharts.charts import Line

import pandas as pd

class BossCrawler:

def init(self, query):

self.query = query

self.filename = ‘boss_info_%s.csv’ % self.query

self.city_code_list = self.get_city()

self.boss_info_list = []

self.csv_header = [“city”, “profession”, “salary”, “company”]

@staticmethod

def getheaders():

user_list = [

“Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16”,

“Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14”,

“Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14”,

“Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14”,

“Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02”,

“Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00”,

“Opera/9.80 (Windows NT 5.1; U; zh-sg) Presto/2.9.181 Version/12.00”,

“Opera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00”,

“Opera/12.0(Windows NT 5.1;U;en)Presto/22.9.168 Version/12.00”,

“Mozilla/5.0 (Windows NT 5.1) Gecko/20100101 Firefox/14.0 Opera/12.0”,

“Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62”,

“Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.10.229 Version/11.62”,

“Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52”,

“Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52”,

“Opera/9.80 (Windows NT 5.1; U; en) Presto/2.9.168 Version/11.51”,

“Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; de) Opera 11.51”,

“Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50”,

“Opera/9.80 (X11; Linux i686; U; hu) Presto/2.9.168 Version/11.50”,

“Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11”,

“Opera/9.80 (X11; Linux i686; U; es-ES) Presto/2.8.131 Version/11.11”,

“Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/5.0 Opera 11.11”,

“Opera/9.80 (X11; Linux x86_64; U; bg) Presto/2.8.131 Version/11.10”,

“Opera/9.80 (Windows NT 6.0; U; en) Presto/2.8.99 Version/11.10”,

“Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.8.131 Version/11.10”,

“Opera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1”,

“Opera/9.80 (X11; Linux x86_64; U; Ubuntu/10.10 (maverick); pl) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (X11; Linux i686; U; ja) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (X11; Linux i686; U; fr) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 6.1; U; sv) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 6.1; U; en-US) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 5.1; U;) Presto/2.7.62 Version/11.01”,

“Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.7.62 Version/11.01”,

“Mozilla/5.0 (Windows NT 6.1; U; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01”,

“Mozilla/5.0 (Windows NT 6.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01”,

“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01”,

“Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00”,

“Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (Windows NT 6.1; U; ko) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (Windows NT 6.1; U; en-GB) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (Windows NT 6.1 x64; U; en) Presto/2.7.62 Version/11.00”,

“Opera/9.80 (Windows NT 6.0; U; en) Presto/2.7.39 Version/11.00”

]

user_agent = random.choice(user_list)

headers = {‘User-Agent’: user_agent}

return headers

def get_city(self):

headers = self.getheaders()

r = requests.get(“http://www.zhipin.com/wapi/zpCommon/data/city.json”, headers=headers)

data = r.json()

return [city[‘code’] for city in data[‘zpData’][‘hotCityList’][1:]]

def get_response(self, url, params=None):

headers = self.getheaders()

r = requests.get(url, headers=headers, params=params)

r.encoding = ‘utf-8’

soup = BeautifulSoup(r.text, “lxml”)

return soup

def get_url(self):

for city_code in self.city_code_list:

url = “https://www.zhipin.com/c%s/” % city_code

self.per_page_info(url)

time.sleep(10)

def per_page_info(self, url):

for page_num in range(1, 11):

params = {“query”: self.query, “page”: page_num}

soup = self.get_response(url, params)

lines = soup.find(‘div’, class_=‘job-list’).select(‘ul > li’)

if not lines:

代表没有数据了,换下一个城市

return

for line in lines:

info_primary = line.find(‘div’, class_=“info-primary”)

city = info_primary.find(‘p’).text.split(’ ')[0]

job = info_primary.find(‘div’, class_=“job-title”).text

过滤答非所谓的招聘信息

if self.query.lower() not in job.lower():

continue

salary = info_primary.find(‘span’, class_=“red”).text.split(‘-’)[0].replace(‘K’, ‘’)

company = line.find(‘div’, class_=“info-company”).find(‘a’).text.lower()

result = dict(zip(self.csv_header, [city, job, salary, company]))

print(result)

self.boss_info_list.append(result)

def write_result(self):

with open(self.filename, “w+”, encoding=‘utf-8’, newline=‘’) as f:

f_csv = csv.DictWriter(f, self.csv_header)

f_csv.writeheader()

f_csv.writerows(self.boss_info_list)

def read_csv(self):

data = pd.read_csv(self.filename, sep=“,”, header=0)

data.groupby(‘city’).mean()[‘salary’].to_frame(‘salary’).reset_index().sort_values(‘salary’, ascending=False)

result = data.groupby(‘city’).apply(lambda x: x.mean()).round(1)[‘salary’].to_frame(

‘salary’).reset_index().sort_values(‘salary’, ascending=False)

print(result)

charts_bar = (

Line()

.set_global_opts(

title_opts={“text”: “全国%s薪酬榜” % self.query})

.add_xaxis(result.city.values.tolist())

.add_yaxis(“salary”, result.salary.values.tolist())

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬取Boss直聘全国Python开发岗位,你可以使用Python的爬虫库来实现。以下是一个简单的示例代码,可以助你开始: ```python import requests import json def get_job_list(): url = 'https://www.zhipin.com/wapi/zpgeek/common/data/city.json' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36' } response = requests.get(url, headers=headers) cities = json.loads(response.text)['zpData']['cityList'] for city in cities: city_code = city['code'] city_name = city['name'] job_url = f'https://www.zhipin.com/wapi/zpgeek/job/list/job/query.json?city={city_code}&query=python&page=1&pageSize=10' response = requests.get(job_url, headers=headers) job_data = json.loads(response.text)['zpData']['data']['list'] for job in job_data: job_name = job['jobName'] company_name = job['company']['name'] salary = job['salary'] print(f"城市:{city_name},公司:{company_name},职位:{job_name},薪资:{salary}") get_job_list() ``` 这段代码首先发送一个请求获取城市列表,然后遍历每个城市,发送请求获取该城市的Python开发岗位信息。最后,打印出每个岗位的城市、公司、职位和薪资信息。 请注意,这只是一个简单的示例代码,实际爬取过程中可能需要处理反爬机制、分页等问题。另外,爬取网站数据时请遵守网站的使用规则,不要频繁发送请求以免对网站造成负担。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值