LoginSignup
2
4

More than 1 year has passed since last update.

コピペでスクレイピング② クラウドワークスの新着情報を収集

Last updated at Posted at 2022-09-13

はじめに

前回の記事を踏まえてクラウドワークスの新着情報を収集するアプリを作ってみる
クラウドワークスのサーバーの負担にならないように、3分間隔くらいでスクレイピングします。

前回はページソースを取得するコードを書きました。
コピペでスクレイピング① selenium でページソースを取得

スクレイピングツールの機能

どうせ作るならなにか実益のあるツールを作ってしまおうということで、
クラウドソーシャルサイトの「クラウドワークス」のサイトの新着情報を収集するツールを
作ってみます。

機能は以下の通り

・指定されたキーワード、今回は「スクレイピング」とし、スクレイピングに関係した新着情報がアレば検出する

・新着情報があればGmailで通知する

・実行ファイル(EXEファイル)にしてどのPCでも簡単使いやすくする

上記の仕様で作ってみたいとおもいます。

開発環境

Windows11pro
Python3.8

外部ライブラリー
Beautifulsoup4
lxml

※lxmlはhtmlで書かれたソースコードをBeautifulsoupが検索できるようにするパーサーです
※外部ライブラリーの導入は、コマンドプロンプトで

# bs4 はBeautifulsoupのパッケージ名です
pip install bs4
pip install lxml

と入力すればインストールされます

ターゲットURLの作り方・ページソース取得

クラウドワークストップページにアクセスし、赤枠内の「仕事を探す」をクリック
2022-09-13_16h34_14.png

②赤枠内の検索窓に「スクレイピング」と入力してEnterキーを押す
2022-09-13_16h35_14.png

③ブラウザのURL表示をコピーします
2022-09-13_16h35_49.png

このままですと
https://crowdworks.jp/public/jobs/search?keep_search_criteria=true&order=score&hide_expired=false&search%5Bkeywords%5D=%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
などと表示されています。このまま使用することも可能ですがひと工夫

URLのエンコード・デコードサイトで変換してみます。
2022-09-13_16h36_32.png
左にコピーしたURLをコピペして、デコードしてみましょう

結果は下記のようになりました
https://crowdworks.jp/public/jobs/search?keep_search_criteria=true&order=score&hide_expired=false&search[keywords]=スクレイピング
URLの一番最後の部分がキーワードになっています。
実は変換後の状態でもURLは使えます。リンクになっているのでクリックしてみてください。
きちんと開くはずです。

それでは、このURLを加工してターゲットURLを作ってみます。

scray_data.py
from bs4 import BeautifulSoup
import lxml
import selenium_tool as st
import os
import shutil
# ==================================================================================
main_url = 'https://www.crowdworks.jp'

keyword = "スクレイピング"
target_url = f"https://crowdworks.jp/public/jobs/search?\ 
keep_search_criteria=true&order=score&hide_expired=false&search[keywords]={keyword}"

# ページソース取得
res = st.source_code_get(target_url)
soup = BeautifulSoup(res, "lxml")

補足説明
import selenium_tool as st は前回作ったページソースを取得するファイルです。
それを今回呼び出し、関数として利用しています。
main_url = 'https://www.crowdworks.jp' は後ほど利用します

さて、
keyword = "スクレイピング"
target_url = target_url = f"https://crowdworks.jp/public/jobs/search?keep_search_criteria=true&order=score&hide_expired=false&search[keywords]={keyword}"
の{keyword}部分に”スクレイピング”キーワードを代入するとURLが出来上がるので、その処理です。

そのURLを前回作ってimportしたst.source_code_get()の引数として入れ、resでWEBページのソースコードを取得しています。resをBeautifulsoupでパースして要素をこれから取り出します。
lxmlの部分の他にthml_parcerというPython標準のパーサーもありますが、lxmlが高速であるため、今回はそちらを利用しました。

Beautifulsoupで要素を抽出

target_urlからウェブページを開き、取得したページはこのようになっています。2022-09-13_18h17_00.png
今回は新着情報の確認とそのページへのURLさえ取得できれば良いので、該当するタグを探します。
ブラウザを開いたまま『F12』ボタンを押すとこのような画面が現れます。2022-09-13_18h22_22.png
これは開いているWEBページのソースコードです。st.source_code(target_url)で全く同じものを取得しています。

次回は
コピペでスクレイピング③ クラウドワークスの新着情報を収集

2
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4