「もうかる家計のつくり方」のスクレイピングで食費のチェック(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にも挑戦しているのですが、認識率が悪い状況です。悪いなりにあとで記事にするかもしれません。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)