Published Date : 2020年9月14日6:48

【python】賃貸不動産サイトから収集したデータを使っての簡単なデータの分析:前半
Simple data analysis using data collected from apartment rental sites:first half


This blog has an English translation


YouTubeにアップした動画、「【python】賃貸不動産サイトから収集したデータを使っての簡単なデータの分析:前半」の補足説明の記事です。

Here's a little more about the 「【python】Simple data analysis using data collected from apartment rental sites:first half」 video I uploaded to YouTube.


目次

Table of Contents




① 動画の説明
① Video Description



この動画は賃貸不動産サイトから収集したデータを使っての簡単なデータ分析のやり方の前半です。

This video is the first part of a simple data analysis using data collected from apartment rental sites.

今回はAJAXでページを表示する賃貸不動産サイトから、

This time, We will use Selenium to scrape the rental apartment information

Seleniumを使って賃貸アパートの情報をスクレいピングしていき、

from the apartment rental site displaying the page in AJAX

CSVファイルに格納するところまでをやります。

and save it to CSV file.

まずはいつも通り必要なモジュールをインポートしていきます。

First, import the modules you need as usual.

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import pandas as pd
import math

スクレイピングするサイトは相手のサーバーに負担をかけないようにURLは表示させません。

I don't want to show the URL because I don't want to burden the server of the scraping site.

クロームドライバーのパスを変数に入れます。

Put the Chrome driver path in the variable.

そしていつも通りSeleniumを使いクロームブラウザを操作していきます。

As always, let's use selenium to navigate the Chrome browser.

options = ChromeOptions()
options.add_argument('--incognito')

driver = Chrome(executable_path=driver_path, options=options)

ブラウザのインスペクタを利用して、サイトのHTMLの構造を調べ、必要なXPATHを変数にまとめます。

Use the browser inspector to examine the HTML structure of the site and put the required XPATH in a variable.

予め、アパートの件数と一ページあたりどれだけの件数を表示するかを調べて変数に入れます。

We check the number of apartments and the number of apartments per page in advance and put it in the variable.

python標準のmathモジュールのceilメソッドを使って総ページ数の小数点以下を切り上げます。

The ceil method of the standard python math module is used to round up the number of pages after the decimal point.

total_pages = math.ceil(total_num/per_page)

後は、Forループを使用してページ毎のアパートの情報を取得していきます。

The For loop is then used to get information about the apartment page by page.

一件ずつ情報を取得して辞書に格納して、最初に用意したリストに加えていきます。

You get the information one by one, store it in a dictionary, and add it to the list you prepared first.

正常にページ送りをする為に、一つ前のページの数を記憶しておき、

In order to page normally, the number of the previous page is temporary stored,

ページが完全に更新されているかの判定に使います。

and used to determine whether a page is completely updated.

一度実行すると取得するアパートの件数の分だけ時間がかかりますので辛抱強く待ちます。

Once it is executed, it takes time for the number of apartments to be acquired, so we will wait patiently.

最後に取得した結果をPandasを使ってデータフレームに直し、

Use Pandas to convert the retrieved result into a data frame,

重複している行を削除して、CSVファイルに書き出します。

and removes duplicate rows and exports to a CSV file.

df = pd.DataFrame(result, columns=result[0].keys())
df = df.drop_duplicates()
df.to_csv(f'tokyo_01_02_03.csv', index=None)

後半はこのデータを利用して、簡単なデータ分析を行っていく予定です。

In the second half, we will use this data to perform simple data analysis.



以上です。お疲れ様です。

That's all. Thank you for your hard work.