0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Alibaba Cloudプロダクト一覧をPythonとBeautifulSoupでスクレイピングする

Last updated at Posted at 2021-02-12

この記事の目的

Google colaboratoryを使って、Alibaba Cloudサイトからプロダクト一覧を取得してみます。
Google colaboratoryはGoogleが提供しているJupyterNotebook環境で、Googleアカウントさえあれば誰でも利用することが可能です。また、一時的ですがGPUリソースを利用することもできます。

無料かつ環境構築のハードルもなくすぐに使えて性能も良いので、使っておいて損はないです!

対象のサイト(Alibaba Cloud国際サイト)

https://www.alibabacloud.com/ja/product
image.png

WEBサイトによってはスクレイピングを禁止しています。
事前に利用規約を読み問題ないかを確認してみましょう。

htmlからプロダクト名称とプロダクト詳細を見つける

chromeのデベロッパーツールからhtmlを解析します。

プロダクトの名称

h6class="product-tit text-base"が判別できました。
したがって、pythonのコードでは以下の通りにタグを指定します。
product_name = soup.find_all("h6", class_="product-tit text-base")

プロダクトの詳細

pclass="product-desc text-sm"が判別できました。
したがって、pythonのコードでは以下の通りにタグを指定します。
product_detail = soup.find_all("p", class_="product-desc text-sm")

image.png

image.png

実行コード


# モジュールのインポート
import re
import csv
import requests
import time
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup

# 関数
def albb():
    # スクレイピング対象の URLに リクエストを贈り HTML を取得する
    res = requests.get("https://www.alibabacloud.com/ja/product")
    time.sleep(1)
    # レスポンスの HTML から BeautifulSoup オブジェクトを作る
    soup = BeautifulSoup(res.text, "html.parser")              
    # プロダクト名称 
    product_name = soup.find_all("h6", class_="product-tit text-base")
    # プロダクト詳細
    product_detail = soup.find_all("p", class_="product-desc text-sm")

    # 辞書とリストの空箱を用意                                      
    result = []
    result_2 = []

    # find_allで取得したものはリストオブジェクトなのでループ文で1つずつリスト内にappendする
    for i in product_name:
        result.append(i.text)
    for x in product_detail:
        result_2.append(x.text)
    # pandasのデータフレームに格納する
    df_result = pd.DataFrame({'product':result, 'detail':result_2})
    # nullセルをdrop
    df_notnull = df_result.dropna(how='any')
    # csvに出力
    df_notnull.to_csv('output.csv',index=False)
    return df_notnull
# 関数の呼び出し
albb()

結果

データフレームに格納されたものを、csvに出力することができました。
csvは、googleのcolaboratory内に保存されます。

image.png

CSVファイルを見てみる

プロダクト以外の余計なサービスを除くと、164種類のプロダクトがありました。
めっちゃ増えてる。

image.png

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?