Python スクレイピング開始 ③

スクレイピングとは、ウェブサイトのHTMLから必要なデータを取得する事を言います。

「習うより慣れろ」のことわざ通り早速試してみましょう。

手始めに今回の目的の為に臨時に作った自分のサイトkumasan.netをスクレイピングしてみましょう。 誰でも他人・他社のソースを見れますが、ダウンロードするときは礼節をわきまえて行う必要があります。 サーバーへの負荷や悪用をふせぐ意味で、サイトによってはscrapingをお断りしているところもあります。

 

—————————————————————

① kumasan.netのhtmlソースをDLする

import requests  #最初に外部ライブラリーのrequestsをinstallしておきます。

# Webページを取得する
url = “https://kumasan.net”
response = requests.get(url)

# 文字化けしないようにする
response.encoding = response.apparent_encoding 
#残念ながら日本語は文字化けしてましたので、英文にしました。

# 取得した文字列データを表示する
print(response.text)

——————————————————————-

<!DOCTYPE html>
<html lang=”en”> 
 <head>
  <meta charset=”UTF-8″>
  <title>Let’s Enjoy Python! </title>
 </head>

 <body>
  <h2>Chapter1 download data</h2>
   <ol>
    <li>What’s scraping?</li>
    <li>Install Python</li>
    <li>Accsess Kumasan.net</li>
  </ol>
 </body>
</html>
 

Pythonと違いintendはなくても動作には変わりません。 見栄え・読み易さだけの問題です。

そして上のhtmlで書いたページkumasan.netは、次のように見えるはずです。
 
Chapter1 download data

  1. What’s scraping?
  2. Install Python
  3. Accsess Kumasan.net

 

次は日本語の文字化けがどこで起きているのかを探して対策を撮ります。

 

② 文字化け対策

レントしているXserverにloginし、kumasan.net内のindex.htmlを見ると、ここで日本語だけが文字化けしている。
と云うことはFTPでuploadしたときに既に文字化けしているということになります。 

これはサーバーの問題ではなくFTPの設定の問題と推定し、FTPの設定を確認したところ、uploadの所がUTF-8であるはずがSJISになっていた。
これでは文字化けするのが当たり前!ということで、そこをUTF-8に修正して、再度index.htmlをupload—>問題解決。

問題解決後kumasan.netをみると;
——————————————
Chapter1 download data
 1.スクレイピングとは何?
 2.Pythonをインストールしよう
 3.Kumasan.netにアクセスしよう
 4.そこにあるhtmlをスクレイプしてみよう
—————————————–
と表示されました。 文字化けは直っております。

分かってみれば当たり前で、最初に気が付かなければならないことでした。 時々エラーに行き当たることが技術レベルの維持には必要なのかもしれません。 やれやれでした。

 

次回はサイトからhtmlをfileとして保存する方法を試します。

 

③ kumsan.netのindex.htmlをファイルとして取り込む

import requests

# Webページを取得する
url = “https://kumasan.net/index.html”
response = requests.get(url)

# 文字化けしないようにする
response.encoding = response.apparent_encoding

# ファイルを書き込みモードで開いて
filename = “index(kumasan.net).txt”
with open(filename, mode=”w”) as f:
# ネットから取得した読み込んだデータを書き込む
f.write(response.text)

次のようなhtml fileがテキストファイルとして自分のパソコンに取り込まれる。

<!DOCTYPE html>
<html lang=”ja”>
 <head>
  <meta http-equiv=”content-type” charset=”utf-8″>
   <title>Let’s Enjoy Python! </title>
 </head>

 <body>
  <h2>Chapter1 download data</h2>
   <ol>
    <li>スクレイピングとは何?</li>
    <li>Pythonをインストールしよう</li>
    <li>Kumasan.netにアクセスしよう</li>
    <li>そこにあるhtmlをスクレイプしてみよう</li>
   </ol>
 </body>
</html>

————————————————–

前は単にhtmlファイルを表示(print)しただけでしたが、今回はテキストファイルとして取り込んでいます。

次回は今回収集したデータを利用して、最終的には必要なデータだけ煮詰めるcodeを書いてみます。

 

続く

Python別館
Python別館 目次

・Pythonで作成したアプリ関連の記事は「Python別館」に、・widgetやその使用方法・それ …

Python別館
脳トレの勧め 2/2

前回は、辞書に三つの要素を入れる術が分からなかったので、策を弄して取敢えずは動くように出来ました。で …

Python別館
脳トレの勧め 1/2

朝一番で頭の体操と称して英単語のクイズをやっております(ここです)。ここで間違えたものや、大事そうな …