要約
PythonとWebスクレイピングの組み合わせは、ビジネスにおいて非常に便利なツールです。
例えば、競合他社や顧客のウェブサイトからデータを収集したり、特定の情報を自動的に取得したりすることができます。
このようなデータ収集や処理は、ビジネス上の意思決定やマーケティング戦略の立案に役立ちます。
以下、具体的な例をPythonのコードとともに紹介します。
詳細内容
例1: ニュースサイトからの記事の取得この例では、ニュースサイトから最新の記事を自動的に収集します。
BeautifulSoupライブラリを使用して、ニュース記事のタイトルおよびURLを取得する方法を示します。
“`python
import requests
from bs4 import BeautifulSoup# ニュースサイトのURLを指定
url = ‘https://news.yahoo.co.jp’# requestsモジュールを使用してHTML文書を取得
response = requests.get(url)# BeautifulSoupを使用してHTMLを解析
soup = BeautifulSoup(response.text, ‘html.parser’)# ニュース記事のタイトルとURLを取得
for article in soup.select(‘.topics a’):
print(article.text)
print(article.get(‘href’))
“`最新のニュース記事はYahooニュースのトピックスとして表示されます。
URLをrequests.get()に渡すと、サイトからHTML文書がダウンロードされます。
その後、BeautifulSoupを使用してHTMLを解析し、記事のタイトルとURLを取得するためにselect()メソッドを使用します。
select()メソッドは、CSSセレクターを使用してHTML要素を選択し、それらをPythonオブジェクトとして返します。
ここでは、.topics aのCSSセレクターを使用して、ニュース記事のリスト内のa要素を選択しています。
例2: 他社の商品の価格を収集するこの例では、Pythonを使用して競合他社のウェブサイトから商品リストと価格を収集します。
例として、Amazonからエアコンの価格を取得する方法を示します。
“`python
import requests
from bs4 import BeautifulSoup# プロダクトページのURLを指定
url = ‘https://www.amazon.co.jp/s?k=エアコン’# requestsモジュールを使用してHTML文書を取得
response = requests.get(url)# BeautifulSoupを使用してHTMLを解析
soup = BeautifulSoup(response.text, ‘html.parser’)# 商品名と価格を取得
for product in soup.select(‘.s-result-item’):
item_name = product.select(‘.s-expand-height span’)[0].text
item_price = product.select(‘.a-price-whole’)[0].text print(item_name)
print(item_price)
“`このコードは、Amazonで「エアコン」と検索されたときの商品リストから情報を収集します。
HTMLページをダウンロードし、BeautifulSoupを使用してHTMLを解析します。
ここでは、.s-result-itemセレクターを使用して、商品リストの各項目を取得します。
item_name変数は、.s-expand-height spanセレクターを使用して商品名を取得します。
item_price変数は、.a-price-wholeセレクターを使用して価格を取得します。
例3: ビジネス名簿からの情報の収集この例では、Pythonを使用してビジネス名簿から企業情報を収集します。
リクルートの「ホットペッパー」というビジネス名簿からレストランの情報を取得する方法を示します。
“`python
import requests
from bs4 import BeautifulSoup# 検索クエリを指定
keyword = ‘レストラン’# URLが変化しないために最大ページ数を指定
max_pages = 3# ベースURL
base_url = ‘https://www.hotp.jp/YT830000/’
params = {‘page’: 1, ‘kw’: keyword}# 指定されたページ数で遍歴
for i in range(max_pages):
# URLを構築
url = base_url + ‘pn’ + str(i) + ‘/’
response = requests.get(url, params=params) # BeautifulSoupを使用してHTMLを解析
soup = BeautifulSoup(response.text, ‘html.parser’) # レストランの情報を取得
for restaurant in soup.select(‘.restaurant-detail’):
restaurant_name = restaurant.select(‘.restaurant-ttl a’)[0].text
tel = restaurant.select(‘.tel-txt’)[0].text.replace(‘\n’, ”).strip()
address = restaurant.select(‘.resinfo-content .address’)[0].text print(restaurant_name + ” | ” + tel + ” | ” + address)
“`このコードでは、リクルートのホットペッパーからレストランの情報を収集します。
検索語句(keyword)を指定し、ページ数(max_pages)を指定して、指定されたページ数でホットペッパーを遍歴します。
最初のページにはページ数が含まれないため、base_urlにはページ数を含めず、paramsにページ数と検索語句を指定します。
各ページにアクセスした後、リスト内の各レストランの情報を取得します。
ここでは、.restaurant-detailセレクターを使用して、各レストランの情報を取得しています。
restaurant_name変数は、.restaurant-ttl aセレクターを使用して店名を取得します。
tel変数は、.tel-txtセレクターを使用して電話番号を取得し、中間の改行を削除します。
address変数は、.resinfo-content .addressセレクターを使用して住所を取得します。
最後に、それらの情報を一緒に出力します。
コメント