Pythonを使用して人気のある仕事の情報を取得し、高給からかけ離れているスキルを確認します


年末といえば、就職した人は来年転職を考え、就職していない人は来年の転職を考えるべきですが、どうしたらいいか考えましたか?

ここに画像の説明を挿入
理解する方法がわかりませんか?大丈夫です、さあ、Pythonを使用してワンクリックで表示および分析しましょう!

1.前戯の準備をする

1.使用するソフトウェア

python 3.8
pycharm 2021专业版 激活码

2.使用される組み込みモジュール

pprint >>> # 格式化输入模块
csv >>> # 保存csv文件
re >>> # re 正则表达式
time >>> # 时间模块

3.インストールするサードパーティモジュール

requests >>> # 数据请求模块 

win + R cmdと入力し、インストールコマンドpip install module nameを入力します。人気が出た場合は、ネットワーク接続がタイムアウトした可能性があります。国内のミラーソースを切り替えるだけです。

本当にできない場合は、私のトップ記事を参照してください
ここに画像の説明を挿入

第二に、アイデアのプロセス

クローラーはブラウザーをシミュレートし、サーバーに要求を送信し、応答として返されるデータを取得します。

データソース分析

まず、ターゲットを決定し、データの内容とその入手先を分析します。

データは、どのURLアドレスとどのリクエストメソッドを介して送信され、それらのリクエストヘッダーを運び、データを取得します(開発者ツールによるパケットキャプチャ分析)

データを分析するときは、要素パネルではなく、サーバーから返されたデータを分析します。要素は要素パネルであり、フロントエンドコードがレンダリングされた後のコンテンツです。
ここに画像の説明を挿入

コードの実装手順

  1. リクエストを送信します。リクエストを送信するために分析したURL(パケット)アドレス、リクエストの送信、リクエストパラメータ、ヘッダーリクエストヘッダー。
  2. データを取得し、応答本文のデータコンテンツを取得し、サーバーから返されたデータを取得します。
  3. データを解析し、必要なコンテンツを抽出し、返されたデータに従ってデータを抽出するために最適な解析方法を選択します。
  4. データを保存し、ローカルデータベース/テキスト/テーブルデータを保存します。
  5. 複数のページをクロールします。
  6. ソフトウェアやチュートリアルはありません。Webページの左側で入手でき、電子書籍、ビデオなどの準備ができています。

3.コード部分

兄弟、最も好きな部分はここにあります、コード上。
ここに画像の説明を挿入

import requests  # 数据请求模块 
import pprint  # 格式化输入模块
import csv   # 保存csv文件
import time # 时间模块


# 打开文件 等会进行保存 mode 是保存方式 a 追加写入
f = open('拉勾.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '公司名字',
    '城市',
    '薪资',
    '经验',
    '学历',
    '详情页',
])
csv_writer.writeheader()  # 写入表头
for page in range(1, 11):
    # 1. 发送请求 字符串格式化输出 {}占位符
    print(f'===================正在爬取第{
      
      page}页的数据内容===================')
    time.sleep(2) # 延时2秒钟
    url = 'https://www.lagou.com/jobs/v2/positionAjax.json'  # 确定请求的url地址
    # headers 请求头  爬虫就是模拟浏览器 对于服务器发送请求, 得到他返回响应数据
    # headers 作用 伪装python代码的  把python代码伪装成浏览器 去发送请求  简单反爬一种手段
    # user-agent 用户代理 浏览器的身份标识
    headers = {
    
    
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
    }
    # data 请求参数, post请求 需要传递一个from data表单数据
    # pycharm使用的小技巧一: 快速批量替换 选中 ctrl + R 输入正则表达式匹配规则
    # pycharm使用的小技巧二: 翻译插件 可以去安装
    data = {
    
    
        'first': 'true',
        'needAddtionalResult': 'false',
        'city': '全国',
        'px': 'new',
        'pn': page,
        'fromSearch': 'true',
        'kd': 'python',
    }
    # 通过requests这个模块里面post请求方法 对于url地址发送请求, 并且给传递一个data请求参数, headers 请求头, 最后response变量接收
    response = requests.post(url=url, data=data, headers=headers)
    # <Response [200]> 放回的结果 response 对象 200 状态码 表示请求成功
    # 2. 获取数据 response.json() 获取json字典数据 response.text 获取文本数据(字符串数据) response.content 二进制数据
    # print(response.text)
    # pprint.pprint(response.json())
    # 3. 解析数据 字典数据类型, 解析数据 提取内容 可以根据键值对取值  根据冒号左边的内容, 提取冒号右边的内容
    # 根据冒号左边的内容, 提取冒号右边的内容
    result = response.json()['content']['positionResult']['result']
    # pprint.pprint(result)
    for index in result:  # for循环 遍历 提取列表里面每一个元素
        title = index['positionName']  # 标题
        company_name = index['companyFullName']  # 公司名字
        city = index['city']  # 城市
        money = index['salary']  # 薪资
        workYear = index['workYear']  # 经验
        edu = index['education']  # 学历
        href = f'https://www.lagou.com/wn/jobs/{
      
      index["positionId"]}.html'
        # json.loads() 字符串数据转字典
        dit = {
    
    
            '标题': title,
            '公司名字': company_name,
            '城市': city,
            '薪资': money,
            '经验': workYear,
            '学历': edu,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(dit)

兄弟よ、大丈夫だと思ったら、3回連続で覚えておいてください〜

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/fei347795790/article/details/121982461