転職・年収データをスクレイピングで分析する方法【Python実装付き】
> Source: Zenn_Python
Execute Primary Source
// Problem
求人サイトの年収表記は「400万〜800万円」や「応相談」など極めて非定型的であり、そのままでは統計的な集計が困難である。また、同一IPからの連続アクセスによるBot検知(403エラー)や、ページネーションによるデータの重複取得といった、スクレイピング特有の運用上の課題が存在する。
// Approach
正規表現を用いて年収テキストを数値(min/max/avg)に変換するクレンジングロジックを実装し、データの構造化を図る。データ保存にはSQLiteのUPSERT(ON CONFLICT)を活用してデータの冪等性を確保し、Bot対策としてレジデンシャルプロキシを組み込むことで、安定したデータ収集を実現するアプローチを取る。
// Result
職種別・スキル別の年収分布や、リモートワーク可否と年収の相関関係を可視化できる。これにより、個人のスキルセットに対する市場価値を客観的な数値として把握することが可能となり、転職交渉における論理的な根拠として活用できるデータ基盤が構築される。
Senior Engineer Insight
> 実務的なデータ収集パイプラインの雛形として、非常に筋が良い。特に、正規表現によるクレンジングやSQLiteのUPSERTを用いた設計は、データ品質と整合性を重視する現場の勘所を押さえている。ただし、大規模なトラフィックを扱うシステムとしては、requestsによる同期処理はボトルネックとなるため、httpx等の非同期I/Oへの刷新が不可欠だ。また、スキル抽出が単純なキーワードマッチングに留まっている点は、文脈依存の誤検知を招くリスクがある。商用レベルに引き上げるならば、NLP(自然言語処理)を用いた高度なエンティティ抽出への移行を検討すべきである。プロキシの導入についても言及されており、実運用における「壁」を予見した構成は評価できる。