plant-raspberrypi3のブログ

ラズベリーパイ3とPythonに挑戦して、植物を愛でたり画像を加工したりします。最近はscikit-imageの勉強してます。

Google検索結果の整理をPythonでやってみた

らずべりーです。お久しぶりのPythonネタ。 植物とも画像ともあまり関係がないネタですが。

Google検索の結果をリスト形式で保存しておきたかったので HTML解析(スクレイピングもどき)にトライしてみました。 HTML解析用のソフトって色々あるんですねー。 このあたりのページを参考にさせていただきました。

orangain.hatenablog.com

一番、手軽そうだったので、BeautifulSoup4というものを使って見ました。

Beautiful Soup: We called him Tortoise because he taught us.

Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation

実際のコードを書くにあたってはこちらのページを参考にさせていただきました。感謝!!

qiita.com

実行環境

目次

  1. Google検索 ~ HTMLファイルの保存
  2. パッケージのインポートとHTMLファイルの読み込み
  3. BeautifulSoup4で解析
  4. 結果をPandasの表形式で表示

手順

0. BeautifulSoup4とlxmlを入れておく

とりあえずどちらもpip installで入れられるらしい。

BeautifulSoup4はAnacondaに一緒にパッケージされていて、私のMacにはすでに入っていました。

1. Google検索 ~ HTMLファイルの保存

素人がやって不可抗力でサイバー攻撃になっても嫌なので(恐れ)、手作業で検索して保存した.htmlファイルを解析することにしました。 なので、あまり自動化って感じもしないですが。

とりあえず、植物ブログらしく「花 図鑑」で検索して、flower_zukan.htmlという名前で保存。


f:id:plant-raspberrypi3:20180127185849p:plain


ちなみにGoogle Chromeを使えば、右クリック->検証でHTMLのソースが見れます。

のちのちの解析の参考に、、、


f:id:plant-raspberrypi3:20180127190036p:plain


見る以外にも色々できるらしいのですが、まだやったことはないです。

このあたりを参照。

ferret-plus.com

prog-8.com

2. パッケージのインポートとHTMLファイルの読み込み

from bs4 import BeautifulSoup
import pandas as pd
import os

current_path = os.getcwd()
file_name = "flower_zukan.html"

file_path = current_path + "/" + file_name

f = open(file_path,"r")

とりあえず、普通にopenで。

3. BeautifulSoup4で解析

HTML解析します。

soup = BeautifulSoup(f, "lxml")

終わり!!!

だと楽ですが、そうは問屋がおろさない。

先ほどのChromeのDeveloperツールとやらで、必要なタグをチェックし、情報を抽出してくる必要があります。見てみるとタイトルの情報は<h3 class="r" ほにゃらら>の中に入っていたので

pages = soup.find_all("h3", class_="r")

pages[0] #内容の確認
<h3 class="r"><a href="https://minhana.net/zukan/" onmousedown="return rwt(this,'','','','1','AOvVaw1ALjFe2utr27NeAd9yJ-5y','','0ahUKEwiiyuW_6ffYAhUKXLwKHXTNClwQFggoMAA','','',event)">花図鑑・植物図鑑を見る - みんなの花図鑑(掲載数:3,406件)</a></h3>

find_allというのはタグを取ってくる時のおまじない的な。 他にもいくつかやり方はあるそうなのですが(selectとか)、この方法が一番簡単だったのでこれにしました。

さらに、ここからタイトルとリンクを別々に20ページ分、リスト化しました。 aタグの中身を取り出すのは.aでOK。地文は.textで、リンクは.get("href")で取り出せます。

title = [pages[i].a.text for i in range(20)]
link = [pages[i].a.get("href") for i in range(20)]

title[0] #内容の確認
'花図鑑・植物図鑑を見る - みんなの花図鑑(掲載数:3,406件)'
link[0] #内容の確認
'https://minhana.net/zukan/'

4. 結果をPandasの表形式で表示

Pandasで表形式に直します。

pd.DataFrame([title,link], index = ["title","url"]).T
title url
0 花図鑑・植物図鑑を見る - みんなの花図鑑(掲載数:3,406件) https://minhana.net/zukan/
1 白色の花 一覧 - みんなの花図鑑(掲載数:3,406件) https://minhana.net/wiki/search/flowerColors:1
2 ポケット花図鑑:知らなかったあの花を調べよう!約400種類収録 https://www.komeri.com/flower/
3 花の図鑑と写真集 http://www.siteandlife.com/
4 花図鑑 - 尾瀬へようこそ http://www.welcome-to-oze.com/flower/
5 かぎけん花図鑑 http://www.flower-db.com/ja//
6 花屋さんで人気の421種 大判花図鑑 | モンソーフルール |本 | 通販 | Amazon https://www.amazon.co.jp/花屋�...
7 「この花なに?」がひと目でわかる! 散歩の花図鑑 | 岩槻秀明 |本 | 通販 ... https://www.amazon.co.jp/「こ�...
8 花図鑑 http://hana-zukan.net/
9 366日の花ずかん | 印鑑のハンコズ楽天市場支店 https://www.rakuten.ne.jp/gold/hankos/366_hana...
10 世界の花図鑑 (@wld_hana) | Twitter https://twitter.com/wld_hana
11 松江の花図鑑(島根県松江市の野草樹木シダの名前が分かる植物花図鑑) https://matsue-hana.com/
12 楽天市場】花 図鑑の通販 https://search.rakuten.co.jp/search/mall/�%8...
13 種類で探す花図鑑3 - みともり http://www.mitomori.co.jp/hanazukan/hanazukan....
14 花図鑑 - みともり http://www.mitomori.co.jp/hanazukan/ai.html
15 10月上旬 | 花期ごとの花図鑑 | 花図鑑 | 白馬五竜高山植物 http://www.hakubaescal.com/shokubutsuen/flower...
16 花図鑑のおすすめ人気ランキング15選【子ども向け・大人向け】 | mybest https://my-best.com/3817
17 育て方がわかる植物図鑑・花図鑑 | みんなの趣味の園芸 NHK出版 https://www.shuminoengei.jp/?a=page_p_top
18 小学館の図鑑NEO 花 | 小学館 https://www.shogakukan.co.jp/books/09217219
19 特集|みんなの花図鑑 - gooブログ https://blog.goo.ne.jp/genre/1390

できた!!!

めでたしめでたし。