【有料級】私が実案件で使用しているWebスクレイピングのテンプレートを公開しました【Python副業】

プログラミング
スポンサーリンク

スポンサーリンク

はじめに

こんにちは。将棋と筋トレが好きな、学生エンジニアのゆうき(@engieerblog_Yu)です。

私はランサーズで、Webスクレイピングを中心に副業を行なっています。

現在も、転職サイトや発注サイトなどのWebスクレイピング案件に携わっています。

今回は、少しでも多くの人がプログラミングで稼げるようになるために、スクレイピングのテンプレートを公開していこうと思います。

noteで完全版を公開中です。

note完全版はこちら

ねこすけ
ねこすけ

今回の記事はボリューム満点にゃ。

スクレイピングは法律違反になる可能性がある

スクレイピングを副業として稼いでいきたい方は、知っておくべきことです。

スクレイピングは法律違反になる可能性があります。

スクレイピングをする際に、サイトの情報を取得するためにサーバーに何度もアクセスします。

人間が実行できないような速度でプログラムがサイトにアクセスしたことにより、サーバーがダウンし、とんでもない損害を巻き起こす可能性があります。

よって最低でも以下のことに気をつけましょう。

・サイトの利用規約でスクレイピング(クローリング)が禁止されていないか

・robots.txtで、スクレイピングしたいURLがDisallowになっていないか

※robots.txtは、(サイトのURL/robots.txt)で見ることができます

・コード内で最低でもsleep(1)を入れて、間隔をとってサーバーにアクセスを行う

次に、私がスクレイピングで稼ぐまでに行なった、勉強方法を紹介したいと思います。

スクレイピングの勉強方法

私が案件を獲得するために使用した講座は、主にこの講座です。

上記の講座では、スクレイピングの基礎から実際に募集されていた案件を用いて、演習を行っていきます。

PythonでスクレイピングができるライブラリとしてはBeautifulSoup,SeleniumがありますがまずはBeautifulSoupのみで良いと思います。

前半のBeautifulSoupの部分を完璧に理解するようにしましょう。

ボリュームとしては3時間分ほどのものです。

Udemyは有料で買い切り形式となっていますが、月に何度かセールを行っているのでその時に買うのがおすすめです。

こちらの講座で学習して、十分に自信がついたら、ポートフォリオを作って、クラウドソーシングサイトでボートフォリオとして記載するのが良いと思います。

対象のUdemy講座はこちら

今回実施するスクレイピングについて

今回はこちらのようなサイトをスクレイピングすることを考えます。

主な実行の手順は

1.会社ホームページにつながるURLを全て取得しjsonファイルに出力する(get_job_url)

2.会社ホームページに記載されている情報を取得する(__get_corp_info)

3.csvファイルに出力する

それでは実際のコーディング部分です。

ライブラリのインストール

pip install bs4
pip install requests
pip install lxml
ゆうき
ゆうき

それでは、スクレイピングのテンプレコードを一部公開していきたいと思います。

会社のホームページのURLを取得する

from time import sleep
import requests
from bs4 import BeautifulSoup
import json
import os
import glob
import csv


# 会社のホームページのURLを取得
def get_job_url():

  for i in range(ページ数):
    job_url = 'https://(該当するURL)/(ページを表すURL){}'
    page = str(i+1)
    job_url = job_id_url.format(page)

    try:
        r = requests.get(job_id_url)
        r.raise_for_status()

    except Exception as e:
        return None

    soup = BeautifulSoup(r.content, 'lxml')

    //会社のボックスが一つ一つ配列に入る
    service_details = soup.find_all(class_="該当するクラス")

    company_urls = []

    for service_detail in service_details:
      service_detail = service_detail.find(class_="該当するクラス")

      company_url = service_detail.get('href')
     
      company_urls.append(company_url)

    filepath = "(書き込みたいフォルダのディレクトリ)/{}.json".format(page)

   //ページごとに、会社URLをjson形式で出力する
    with open(filepath, mode="w") as f:
        f.write(json.dumps(company_urls))
        sleep(3)

会社情報を取得

# 会社情報(会社名、住所、会社URL)を取得
def __get_corp_info(url):

    sleep(3)
    try:
        r = requests.get(url)
        r.raise_for_status()

    except Exception as e:
        return None

    soup = BeautifulSoup(r.content, 'lxml')


   //ddやdtはサイトによって変える
    try:
      company_name = soup.find("dt", string="会社名").find_next_sibling("dd").text.strip()

    except Exception as e:
      company_name = None

    try:
        company_address = soup.find("dt", string="住所").find_next_sibling("dd").text.strip()

    except Exception as e:
        company_address = None

    try:
        company_url = soup.find("dt", string="会社URL").find_next_sibling("dd").text.strip()

    except Exception as e:
        company_url = None

    dict = {
        "会社名": company_name,
        "住所": company_address,
        "会社URL": company_url
    }

    return dict

会社情報のファイル出力、関数実行に関しましてはnoteで公開しています。

note完全版はこちら

終わりに

今回は私が実際に取得した案件で使用した、テンプレコードを公開しました。

Pythonで副業したい方、スクレイピングよりもより大きな案件に携わりたい方に向けての記事も投稿しているので、そちらも併せてどうぞ。

ねこすけ
ねこすけ

がんばろーにゃ。

コメント

タイトルとURLをコピーしました