モバイル インターネットの発展と機械学習などの人気分野の影響により、Python を知り、学習を始める人がますます増えています。専攻生であろうと非大学院生であろうと、Python は間違いなく、コンピューターの世界で始めるのに非常に適した最初の言語です。その構文は非常に簡潔で、書かれたプログラムは理解しやすいです。これもまた、 「シンプルかつエレガント」という Python の一貫した哲学。コードが読みやすいことを保証することに基づいて、できる限り少ないコードでアイデアを完成させます。
つまり、どの程度 Python を学べば、仕事を探し始めることができます。ここでのテストの唯一の基準は実践であることは誰もが知っています。ですから、どれだけ仕事を見つけられるかは、市場の需要によって決まります。結局のところ、企業はあなたを採用します。それは仕事のためであり、お金を払って勉強するためではありません。
そこで今日は、市場がどのような人材を必要としているのかを知るために、ドロップダウン フックで Python に関する採用情報をクロールしてみます。
1. Webページの構造解析
Lagou.com のホームページを開き、キーワード「Python」を入力し、F12 キーを押して Web ページのデバッグ パネルを開き、「ネットワーク」タブに切り替えて、フィルター条件として「XHR」を選択し、すべての準備ができたら「検索」をクリックします。 Web ページ データのネットワーク リクエストを注意深く観察してください。
これらのリクエストから、データは jobs/positionAjax.json インターフェイスから取得されていると思われると大まかに推測できます。
心配しないで、ネットワーク リクエスト レコードを確認してクリアし、ページをめくってみましょう。2ページ目をクリックすると以下のようにリクエストが記録されます。
これらのデータは POST リクエストを通じて取得され、Form Data の pn が現在のページ番号であることがわかります。Web ページの分析が完了したら、データを取得するクローラーを作成できます。クローラーのコードは次のようになります。
url = 'https://www.lagou.com/jobs/positionAjax.json?px=new&needAddtionalResult=false'
headers = """
accept: application/json, text/javascript, */*; q=0.01
origin: https://www.lagou.com
referer: https://www.lagou.com/jobs/list_python?px=new&city=%E5%85%A8%E5%9B%BD
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
"""
headers_dict = headers_to_dict(headers)
def get_data_from_cloud(page):
params = {
'first': 'false',
'pn': page,
'kd': 'python'
}
response = requests.post(url, data=params, headers=headers_dict, timeout=3)
result = response.text
write_file(result)
for i in range(76):
get_data_from_cloud(i + 1)
プログラムを作成した後、あなたは期待に胸を膨らませ、震える手で実行ボタンを押します。ワクワクしてデータの受信を待ちますが、得られる結果データはおそらく次のようなものです。
{
"success":true,"msg":null,"code":0,"content":{
"showId":"8302f64","hrInfoMap":{
"6851017":{
"userId":621208...
{
"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"xxx.yyy.zzz.aaa","state":2402}
...
疑う必要はありません、これが私が得た結果です。これは、Lagou.com にはクローラー対策メカニズムがあるためです。対応する解決策は、頻繁にクロールせず、各データ取得後に適切に一時停止することです。たとえば、2 つのリクエストごとに 3 秒間スリープし、データをリクエストするときにそれを追加します。 . クッキー情報。完成したクローラ プログラムは次のとおりです。
home_url = 'https://www.lagou.com/jobs/list_python?px=new&city=%E5%85%A8%E5%9B%BD'
url = 'https://www.lagou.com/jobs/positionAjax.json?px=new&needAddtionalResult=false'
headers = """
accept: application/json, text/javascript, */*; q=0.01
origin: https://www.lagou.com
referer: https://www.lagou.com/jobs/list_python?px=new&city=%E5%85%A8%E5%9B%BD
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
"""
headers_dict = string_util.headers_to_dict(headers)
def get_data_from_cloud(page):
params = {
'first': 'false',
'pn': page,
'kd': 'python'
}
s = requests.Session() # 创建一个session对象
s.get(home_url, headers=headers_dict, timeout=3) # 用 session 对象发出 get 请求,获取 cookie
cookie = s.cookies
response = requests.post(url, data=params, headers=headers_dict, cookies=cookie, timeout=3)
result = response.text
write_file(result)
def get_data():
for i in range(76):
page = i + 1
get_data_from_cloud(page)
time.sleep(5)
当然のことながら、現在、合計 1131 項目のすべてのデータを取得できます。
2. データクリーニング
上記では、取得した json データを data.txt ファイルに保存しましたが、これは後続のデータ分析操作に不便です。データの分析にはパンダを使用するので、データのフォーマットを行う必要があります。
手順は難しくありませんが、少し面倒です。具体的なプロセスは次のとおりです。
def get_data_from_file():
with open('data.txt') as f:
data = []
for line in f.readlines():
result = json.loads(line)
result_list = result['content']['positionResult']['result']
for item in result_list:
dict = {
'city': item['city'],
'industryField': item['industryField'],
'education': item['education'],
'workYear': item['workYear'],
'salary': item['salary'],
'firstType': item['firstType'],
'secondType': item['secondType'],
'thirdType': item['thirdType'],
# list
'skillLables': ','.join(item['skillLables']),
'companyLabelList': ','.join(item['companyLabelList'])
}
data.append(dict)
return data
data = get_data_from_file()
data = pd.DataFrame(data)
data.head(15)
3. データ分析
データの取得やデータのクリーニングは目的ではなく手段であり、最終的には取得した採用データから採用担当者のニーズを掘り起こし、スキルマップを継続的に改善することを目標としています。
街
どの都市が最も採用ニーズが高いかを見てみましょう。ここでは上位 15 都市のデータのみを取り上げます。
top = 15
citys_value_counts = data['city'].value_counts()
citys = list(citys_value_counts.head(top).index)
city_counts = list(citys_value_counts.head(top))
bar = (
Bar()
.add_xaxis(citys)
.add_yaxis("", city_counts)
)
bar.render_notebook()
pie = (
Pie()
.add("", [list(z) for z in zip(citys, city_counts)])
.set_global_opts(title_opts=opts.TitleOpts(title=""))
.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
)
pie.render_notebook()
上図からわかるように、基本的に北京が採用量の4分の1以上を占め、次いで上海、深セン、杭州が続き、需要だけで見ると、一線都市4都市のうち広州が杭州に置き換わっている。
これは、なぜ私たちが一級都市で開発するのかを側面から説明するものでもあります。
学歴
eduction_value_counts = data['education'].value_counts()
eduction = list(eduction_value_counts.index)
eduction_counts = list(eduction_value_counts)
pie = (
Pie()
.add("", [list(z) for z in zip(eduction, eduction_counts)])
.set_global_opts(title_opts=opts.TitleOpts(title=""))
.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
)
pie.render_notebook()
少なくとも学士以上の学位を要求している企業がほとんどのようですが、現代社会においては、基本的に学士取得が就職活動の最低条件となっていると言わざるを得ません(よほどの能力がある人を除く)。
勤務年数
work_year_value_counts = data['workYear'].value_counts()
work_year = list(work_year_value_counts.index)
work_year_counts = list(work_year_value_counts)
bar = (
Bar()
.add_xaxis(work_year)
.add_yaxis("", work_year_counts)
)
bar.render_notebook()
最も需要が高いのは勤続 3 ~ 5 年の中級エンジニアで、次に 1 ~ 3 年の若手エンジニアが続きます。
実際、これは市場の法則とも一致しています。なぜなら、上級エンジニアの転職頻度は、初級および中級レベルのエンジニアに比べてはるかに低く、企業における上級エンジニアに対する需要は、初級および中級レベルのエンジニアのそれよりもはるかに低いからです。中堅エンジニア。
しかし、調べてみると1年未満の採用は非常に少なく、独学でこの業界に入るのは難しいという人も多いです!
業界
これらの採用担当者がどの業界に属しているかを見てみましょう。業界データはあまり規則的ではないため、 に従って各レコードを個別に切り出す必要があります。
industrys = list(data['industryField'])
industry_list = [i for item in industrys for i in item.split(',') ]
industry_series = pd.Series(data=industry_list)
industry_value_counts = industry_series.value_counts()
industrys = list(industry_value_counts.head(top).index)
industry_counts = list(industry_value_counts.head(top))
pie = (
Pie()
.add("", [list(z) for z in zip(industrys, industry_counts)])
.set_global_opts(title_opts=opts.TitleOpts(title=""))
.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
)
pie.render_notebook()
モバイル インターネット業界は需要の 4 分の 1 以上を占めており、これは私たちが知っている一般的な環境と一致しています。
スキル要件
採用担当者が必要とするスキルのワードクラウドを見てみましょう。
word_data = data['skillLables'].str.split(',').apply(pd.Series)
word_data = word_data.replace(np.nan, '')
text = word_data.to_string(header=False, index=False)
wc = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc', background_color="white", scale=2.5,
contour_color="lightblue", ).generate(text)
wordcloud = WordCloud(background_color='white', scale=1.5).generate(text)
plt.figure(figsize=(16, 9))
plt.imshow(wc)
plt.axis('off')
plt.show()
Python 以外ではバックエンド、MySQL、クローラー、フルスタック、アルゴリズムなどがよく登場します。
給料
次に、大手企業の給与条件を見てみましょう。
salary_value_counts = data['salary'].value_counts()
top = 15
salary = list(salary_value_counts.head(top).index)
salary_counts = list(salary_value_counts.head(top))
bar = (
Bar()
.add_xaxis(salary)
.add_yaxis("", salary_counts)
.set_global_opts(xaxis_opts=opts.AxisOpts(name_rotate=0,name="薪资",axislabel_opts={
"rotate":45}))
)
bar.render_notebook()
ほとんどの企業が提示する給与は依然として非常に高く、基本的には 20,000 から 35,000 の間ですが、スキルがある限り、満足のいく給与の仕事を見つけるのは困難です。
福祉
最後に、同社が提供するその他の特典を見てみましょう。
word_data = data['companyLabelList'].str.split(',').apply(pd.Series)
word_data = word_data.replace(np.nan, '')
text = word_data.to_string(header=False, index=False)
wc = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc', background_color="white", scale=2.5,
contour_color="lightblue", ).generate(text)
plt.figure(figsize=(16, 9))
plt.imshow(wc)
plt.axis('off')
plt.show()
年末給与2倍、業績賞与、フラットマネジメント。どれもよく知られたメリットですが、その中でもフラットな経営がインターネット企業の特徴です。国有企業や他の物理的企業とは異なり、上司と部下の概念は比較的重いです。
4. まとめ
本日、私たちは Lagou.com から Python に関する 1,300 以上の採用データを取得しました。この一連のデータを分析した結果、次の結論に達しました。
教育に関しては、学士号を取得して卒業した方が良いです。市場では、1~5 年の実務経験を持つエンジニアの需要が比較的大きいです。最も需要が高い都市は、北京、上海、深セン、杭州です。最大の需要は依然としてモバイル インターネットであり、ほとんどの企業は良い給与パッケージを提供しています。
独学で始めたい方へ:Pythonだけでなく、アルゴリズムやデータベースなどの関連知識も併せて学ぶことをおすすめします どの言語でも同じですいつでも業界に参入できるチャンスです!
あなたが今歩いている道は、人生で最も困難な道かもしれません。
Python テクニカル リザーブについて
就職でも副業でもお金を稼ぐためにPythonを学ぶのは良いことですが、Pythonを学ぶにはやはり学習計画が必要です。最後に、Python を学習したい人に役立つ Python 学習教材の完全なセットを全員で共有します。
1. Python学習概要
Pythonの全方位の技術ポイントを整理して各分野の知識をまとめており、上記の知識に応じて対応する学習リソースを見つけることができ、より包括的に学習できる点が便利です。
スペースに限りがあるため、情報の一部のみが表示されています。以下のリンクをクリックして入手してください。
CSDN: Python ゼロベースの入門から実戦までの完全な学習教材セット、無料で共有可能
2. Python の必須開発ツール
3. 入門学習ビデオ
4. 実践事例
光学理論は役に立たず、それに従って学ぶ必要があり、学んだことを実践に応用できるように自分でやる必要がありますが、このとき、いくつかの実戦事例から学ぶことができます。
5. Python の副業パートタイムとフルタイムのルート
6. インターネット企業の面接での質問
高収入の仕事を見つけるには Python を学ばなければなりません。以下の面接の質問は、アリ、テンセント、バイトなどの第一線のインターネット企業からの最新の面接資料であり、アリの上司が権威ある回答をしています。このセットを終えた後、面接資料は誰もが満足のいく仕事を見つけることができると信じています。
この完全な Python 学習教材セットは CSDN にアップロードされています。必要な場合は、以下の CSDN の公式 QR コードをスキャンするか、ホームページと記事の下部にある WeChat カードをクリックして収集方法を取得することもできます。 [完全無料保証]