Pythonsugi【python】Heliumを利用した求人サイトスクレイピング:サンプルコードありツイートシェアはてブ送るPocketTweetプログラミング学習の中でスクレイピングに興味/関心を持つ人は多いかと思います。スクレイピング技術の中でもSeleniumを活用する人もたくさんいます。そんなSeleniumを簡単に利用できる状態にしたライブラリがHeliumです。Heliumの使い方を知りたい人Heliumを利用したスクレイピングをしたい人Heliumのサンプルコードを確認したい人これらの悩みを解決しながら、Heliumの特徴や具体的な活用方法を解説します。案件ベースに沿ってスクレイピングコードの作成と考え方を記載しています。筆者自身クラウドソーシングサイトであるランサーズにてコンスタントに毎月10万円を稼ぎ、スクレイピング業務にて2021年6月に最高報酬額である30万円を突破しました。年間報酬額も100万円突破するなど、実務的なスクレイピング技術の活用方法や具体的な稼ぎ方について、一定の記事信頼を担保できると思います。プログラミングの中でもスクレイピング技術は習得することで、副業に十分活かせる武器になると先にお伝えしておきます。独学に限界を感じたなら...とりあえず独学でプログラミング学習を始めたけど、右も左も分からずあなたの時間が無駄に終わるどころか挫折するかもしれません。まとめHeliumとはHeliumは、ブラウザ操作を実現するSeleniumのwrapperライブラリとして利用できます。そのため、HeliumはSeleniumと同様にブラウザ操作を自動化できます。Heliumには以下5つの特徴が存在します。プログラミング初学者にとって難しい初期構築のWebdriver設定やボタン等のラベル指定操作はありがたいです。heliumコマンドプロンプトあるいはターミナル等でpipにより、インストールすることができてすぐに利用できます。同時にSeleniumもインストールされています。スクレイピングコードが求められる案件スクレイピングとは、特定のWebサイトにおけるページ情報を収集することです。基本的にスクレイピングコードが求められる場面は以下のタイミングです。特定サイト情報を抽出してリストアップスクレイピングが情報収集を目的とするため、特定サイトが案件ごとに変化するのが一般的です。以下の画像は、クラウドソーシングサイトであるランサーズにて発注されていた案件です。例として取り上げましたが、クラウドワークスやランサーズで「リスト作成」案件を探せば、類似案件は大量に発注されています。本記事で取り扱うサンプルコードは、採用ホームページ・求人サイトどちらも関連する”マイナビ”を指定サイトとして作成しています。スクレイピングの具体的な流れや必要となる知識を詳しく知りたい人は、「【python】スクレイピングで利用する各種ライブラリと稼ぐための活用方法」で解説します。【python】スクレイピングで利用する各種ライブラリと稼ぐための活用方法2021.07.18実践的なスクレイピングコード作成の流れ”マイナビ”を指定サイトとした場合、以下の状況を確認する必要があります。指定サイトが異なる場合でも、基本的に確認事項は変わらないと思います。取得情報の抽出CSVファイル出力どんな指定サイトであっても、この流れは基本となります。以下の項目は”マイナビ”を指定サイトとした場合、上記の確認事項を当てはめて具体化した流れです。次章から具体的な流れを画像とコードを含めて解説します。Seleniumによる同案件のスクレイピングサンプルコードを確認したい人は「【python】Selenium&BeautifulSoup&requestsによるスクレイピング:サンプルコードあり」で解説します。【python】Selenium&BeautifulSoup&requestsによるスクレイピング【サンプルコードあり】2021.07.24Heliumによるスクレイピングの流れここから任意の.pyファイルを作成してコードを実装します。csv個人的に利用したいライブラリがいくつか存在したため、複数のライブラリをインポートしています。スクレイピングで利用するrequests、BeautifulSoup、SeleniumなどはPCにインストールしたのちにインポートします。Seleniumと違い、heliumはWebdriverの環境設定等は不要です。csvwriter.writerow(['会社名','住所','電話番号','メールアドレス'])キーワード検索を用いて、ヒットさせたい企業を変更できるようコード実装しています。ローカルPCにて作成日となるフォルダとCSVファイルを生成するコードも実装しています。メールアドレスを取得します。start_chrome(url)urlの変数にマイナビサイトのURLを指定します。driver変数にstart_chrome(url)を格納するだけでブラウザを起動させることができます。指定したURLに対して入力したキーワードを付与し、start_chrome()にてサイトアクセスしブラウザを展開します。キーワードとして”DX”を指定しサイト内検索した企業一覧ページになります。breakkill_browser()検索結果の各企業詳細ページのURLを格納する変数を用意します。wihle文にて、ページカウントを行いながら、リスト変数にクラス名’boxSearchresultEach’でヒットした値(各企業詳細ページのHTML要素)を取得します。href>タグ要素のテキストデータであるURLを抽出します。100)となれば、次ページに遷移して処理を繰り返します。次ページに遷移する際に、ボタンのラベルである『次の100社』を指定すればクリックできます。イコールでなければ、企業一覧ページの企業数が100件未満であるため、1ページだけで処理を終えるよう実装しています。Heliumのみで各企業の詳細ページへアクセスすると膨大なブラウザを展開する必要があるため、ここでは各企業詳細ページのURLを取得できたタイミングでkill_browser()し処理を終えています。Seleniumによる同案件のスクレイピングサンプルコードを確認したい人は「【python】Selenium&BeautifulSoup&requestsによるスクレイピング:サンプルコードあり」で解説します。【python】Selenium&BeautifulSoup&requestsによるスクレイピング【サンプルコードあり】2021.07.24requests&BeautifulSoupによるスクレイピングの流れ次に、Heliumにてスクレイピングした各企業詳細ページのURLを利用して詳細情報の特定と抽出を行い、CSVファイルに出力します。print("next")for文にて、取得したURLの数だけ同じ繰り返し処理を行います。requestsを利用して各取得URLにアクセスし、企業ページのテキストデータを取得します。BeautifulSoupを用いて、取得した企業ページのテキストデータをHTML要素として解析(パース)します。メールアドレスを特定/抽出し、全てのデータが満たされている場合にCSVファイルに出力します。データが満たされていない場合は、何が取得できていないかエラーを吐き出し、繰り返し処理を実行します。h1").textBeautifulSoupのselect_oneメソッドを利用して、企業詳細ページのHTML要素から会社名を抽出しています。soup.select_one("#corpDescDtoListDescText220").textBeautifulSoupのselect_oneメソッドを利用して、企業詳細ページのHTML要素から住所と電話番号を抽出しています。soup.select_one("#corpDescDtoListDescText130").textBeautifulSoupのselect_oneメソッドを利用して、企業詳細ページのHTML要素からメールアドレスを抽出しています。open関数を利用して抽出したデータ群をCSVファイルに書き込み、取得したURLの件数分を繰り返します。以下がスクレイピングサンプルコードの全体像になります。print("next")全体から理解するのは難しいですが、一つ一つを分離しながら取り組むことで全体像が把握でき理解しやすくなります。スクレイピングで利用するHelium、requests、BeautifulSoupの特徴を活かすことで簡単かつ効率的にデータ収集できます。サンプルコードを変更して別の特定サイトでもスクレイピング実行してみてください。以下の画像がサンプルコードの実行結果で得られたCSVファイルになります。メールアドレスの4つのデータが満たされているデータのみCSVファイルに出力されます。そのため、キーワード”DX”にて取得できた企業データは、合計で177件(マイナビ2022より)になりました。まとめスクレイピングとは、特定のWebサイトにおけるページ情報を収集することです。基本的にスクレイピングコードが求められる場面は以下のタイミングです。特定サイト情報を抽出してリストアップスクレイピングが情報収集を目的とするため、特定サイトが案件ごとに変化するのが一般的です。pythonによるスクレイピングを実行する場合、抽象的なスクレイピングの流れからイメージしましょう。基本的にどんな指定サイトでも操作は変わりません。今回はマイナビサイトを利用しましたが、抽象的な流れを把握できたら具体的なスクレイピングの流れを構想しましょう。具体的なスクレイピングの流れを構想できたら、スクレイピングコードの実装になります。プログラミングコードは、具体的な処理の流れが把握/理解できなければコードに落とし込むことができません。抽象的な流れ→具体的な流れ→コード実装といった作業を想定しておきましょう。python初心者でも実現可能なプログラムは数多くあるため、python初心者が簡単に作成できるものを知りたい人は、「【認定ランサー】Python初心者が作れるものを目的別に学習方法解説!」で解説します。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。【python】Selenium&BeautifulSoup&requestsによるスクレイピング【サンプルコードあり】RECOMMENDこちらの記事も人気です。2019.12.15【Mac編】Pythonでexcel(エクセル)を自動化ABOUTこの記事をかいた人sugi大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2019年2月から起業し、今に至る。自社サービス及び製品を開発、ブログ収入、クラウドソーシングなど、多方面で売り上げを立てている。