前稿でサイトのソースをテキストファイルとしてDLしました。
これからそれを解析していきます。 いつかは欲しいデータが得られるでしょう。
① 解析用のライブラリー Beautiful Soup、parse をインストール
C:\Users\tak11>pip install beautifulsoup4
Requirement already satisfied: beautifulsoup4 in c:\users\tak11\appdata\local\programs\python\python37\lib\site-packages (4.7.1)
Requirement already satisfied: soupsieve>=1.2 in c:\users\tak11\appdata\local\programs\python\python37\lib\site-packages (from beautifulsoup4) (1.9)
もし既にinstallしてあれば、上の表示が出ます。
解析用のライブラリー続き -- 僕のPCでinstallするとコマンドプロンプトには次のように出ます。
C:\Users\tak11> pip install parse
Collecting parse
Downloading https://files.pythonhosted.org/packages/84/4d/5578a484f4a3ec5d4440a95731a104a96a12a6fb57385292d3e7b74d8f6d/parse-1.12.1.tar.gz
Building wheels for collected packages: parse
Building wheel for parse (setup.py) … done
Created wheel for parse: filename=parse-1.12.1-cp37-none-any.whl size=22345 sha256=7f0aa3503fa48f07b2a60ad01cb4e076ae6ea48cf9d6a666182622b2cc2f0888
Stored in directory: C:\Users\tak11\AppData\Local\pip\Cache\wheels\16\f1\d5\72f7e2c22ab3d106bb6f7d727552b5e027b832284f4704b106
Successfully built parse
Installing collected packages: parse
Successfully installed parse-1.12.1 <— これが出ればOK!
自分の環境で扱えるように解析、変換することをparseと云います。
また、parserとは、パースする処理をまとめたプログラムのことで、例えばオンラインでパースするツールはパーサーですし、自分でパースする関数を作ればその関数がパーサーということらしいです。
② kumasan.net/test2.html のソースをドウンロードするPython code
ライブラリーのrequests, BeautifulSpip, parseのinsatllを忘れないように注意!
それでは Go!
————————————————–
import requests
from bs4 import BeautifulSoup
# Webページを取得して解析する
load_url = “https://kumasan.net/test2.html”
html = requests.get(load_url)
soup = BeautifulSoup(html.content, “html.parser”)
# HTML全体を表示する
print(soup)
③ kumasan.net/test2.html のソースをドウンロードする
目的のサイト表示は下記です。
このサイトのソースをBeatifulSoupで表示させたのが次です。 htmlではなくtextになっております。
==========
<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″/>
<title>Python2年生</title>
</head>
<body>
<div id=”chap1″>
<h2>第1章 Pythonでデータをダウンロード</h2>
<ol>
<li>スクレイピングってなに?</li>
<li>Pythonをインストールしてみよう</li>
<li>requestsでアクセスしてみよう</li>
</ol>
</div>
<div id=”chap2″>
<h2>第2章 HTMLを解析しよう</h2>
<ol>
<li>HTMLを解析してみよう</li>
<li>ニュースの最新記事一覧を取得してみよう</li>
<li>リンク一覧をファイルに書き出そう</li>
<li>画像を一括ダウンロードしよう</li>
</ol>
</div>
</body>
</html>
>>>
次回はこのソースからタグ(<>)を外し、必要なデータを取得します。
④ 必要なデータだけ取り込む
上記のhtmlよりすべてのliタグを検索して、その文字列のみを表示します。
codeは次です。
——————————————————-
import requests
from bs4 import BeautifulSoup
# Webページを取得して解析する
load_url = “https://kumasan.net//test2.html”
html = requests.get(load_url)
soup = BeautifulSoup(html.content, “html.parser”)
# すべてのliタグを検索して、その文字列を表示する
for element in soup.find_all(“li”):
print(element.text)
その結果はこうなりました。
===
スクレイピングってなに?
Pythonをインストールしてみよう
requestsでアクセスしてみよう
HTMLを解析してみよう
ニュースの最新記事一覧を取得してみよう
リンク一覧をファイルに書き出そう
画像を一括ダウンロードしよう
>>>
これで<li>で括られた文字列だけが抜き出されておりますね。