2017年08月27日

「もうかる家計のつくり方」のスクレイピングで食費のチェック(Python)

嫁さんとの会話で「食費がどうしても40000円以下に出来ないのだけれど、たまにWebで30000円代の家計を見ることがあり、一般的に毎月の食費はどれくらいなのだろうか」という会話になりました。

総務省の家計調査をみても良いのですが、家計相談をしている人の食費をチェックしてみようということで横山光昭さんの「もうかる家計のそだて方」をチェックすることにしてみました。

もうかる家計のそだて方」の家計改善結果は記事中に画像でリンクされています。そのため、対象画像をスクレイピングすることにしました。

結果

作成したスクリプトを実行すると下記の様に画像がダウンロードされます。一部対象外の画像もダウンロードされていますが、手間とのトレードオフということで(^^;

171個ダウンロードされています。
20170825_kakei_0.png

各々、家計改善のデータとなっています
20170825_kakei_1.png


直接画像をリンクさせて頂きますが、下記のような画像をダウンロードしています。


ちなみに、食費の確認結果はおおむね40000円以上でした。そのため40000~50000円を目標金額として嫁さんと話をしています。

では、今回のスクリプトに続きます。

スクリプト

import sys,os
import re
import time
import webbrowser
import urllib.request as urlreq
from bs4 import BeautifulSoup
import requests

linkData = []

# page=9を指定して記事のリストを一通り表示させる
res = requests.get("https://style.nikkei.com/money/DF130120166011?page=9")
soup = BeautifulSoup(res.text, "lxml")

# Linkの箇所をselect
links = soup.select("a[href]")
for a in links:
#Linkタグのhref属性の箇所を抜き出す
href = a.attrs['href']
# DF130120166011が「もうかる家計のつくり方」の記事を示す
# そのLINKをリストに格納
if re.search(r"DF130120166011",href):
linkData.append("https://style.nikkei.com/"+href)

imgnum = 0
for link in linkData:
# 記事のpageを1〜4までチェックする
for num in range(1,4):
res = requests.get(link+"&page="+str(num))
soup = BeautifulSoup(res.text, "lxml")

# 記事中の家計を示す画像データを抜き出す
# class fancyboxの抜き出し
links = soup.select(".fancybox")
for a in links:
imageLink = a.attrs['href']
# 「PB」が元画像を示す(PNだと縮小画像)
if re.search(r"article-image-ix.nikkei.com/.*PB.*jpg.*",imageLink):
# 画像をダウンロードする
urlreq.urlretrieve(imageLink,str(imgnum)+".jpg")
imgnum=imgnum+1
# デバッグ用にダウンロード先Linkを表示
print(imageLink)
画像データのOCRにも挑戦しているのですが、認識率が悪い状況です。悪いなりにあとで記事にするかもしれません。

スポンサーリンク
posted by くまなべ at 10:10 | Comment(0) | TrackBack(0) | Python
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/180753590
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック