Pythonでしいたけ占いを自動で取得する
今回はPythonを使って自分の星座のしいたけ占いを自動で取得するプログラムを作りました。
使用したライブラリ
requests
BeautifulSoup
calendar
datetime
しいたけ占いとは?
しいたけ占い(週間)は毎週月曜更新で、1週間の運勢をオーラカラーと共に診断するサイトです。今の状況と、これからどうすればよいのかを解説しているところが魅力で私自身手軽に見てこれからどうしようかなぁと考える指針にしています。
主な作成法
しいたけ占いは毎週月曜日に占いが更新されます。そのためURLが毎週変更されます。さらにそれぞれの星座を英語表記にした単語が最後尾についています。
この場合執筆日時(2024/02/18)週分である2024-02-12がURLに含まれています。また羊座の英称ariesが最後尾についています。これをプログラムで取得できるようにするのが必要になってきます。
星座を英語表記に変える
Pythonの辞書型を使用してユーザーの入力した星座を英語表記に変えます。
辞書名[key名] を入力すると : で繋がれているvalueが出力されていることを利用しています。
その週のしいたけ占いを取得
毎週月曜日に更新されるためURLが毎週変更されてしまいます。そのためcalendarとdatetimeライブラリを使用してその日がどの週に属しているかを探索します。
このコードからもし今日がその週の初め(月曜日)より大きい数字の日付であるならばその初めの日にちがしいたけ占いで使用されているURLであるといえます。
この二つを変数datesに格納し文の足し算を行います。
これで正しいURLを獲得することができました。
getを使う
正しいURLを獲得できたことでrequests、BeautifulSoupを使いwebを取得できるようになります。
以下のサイトで詳しくrequests、BeautifulSoupが説明されているのでこちらでご確認ください
以下作成したコード
import requests
from bs4 import BeautifulSoup
import calendar
import datetime
today_date = datetime.date.today()
year = today_date.year
month1 = today_date.month
day = today_date.day
x=calendar.monthcalendar(year,month1)
for i in x:
if i[0]<=int(day):
date=i[0]
x=str(input('あなたの星座'))
con = {
'牡羊座': 'aries',
'おうし座': 'taurus',
'双子座': 'gemini',
'蟹座': 'cancer',
'獅子座': 'leo',
'乙女座': 'virgo',
'天秤座': 'libra',
'さそり座': 'scorpio',
'射手座': 'sagittarius',
'やぎ座': 'capricorn',
'水瓶座': 'aquarius',
'魚座': 'pisces'
}
def serch(x):#辞書から英訳する
constellaton=con[x]
return constellaton
dates=(str(year)+'-0'+str(month1)+'-'+str(date))
url=('https://shiitakeuranai.jp/weekly-horoscope/'+str(dates)+'/'+serch(x))
response=requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
print(dates)
print('今週のあなたを分析')
print()
for i in soup.select("body > main > section:nth-child(1) > div > div._root_hvc32_1._content_vbk6l_74 > p"):
print(i.getText())
print()
print('今週どう乗り切る?')
for i in soup.select("body > main > section:nth-child(3) > div > div > p"):
print(i.getText())
この記事が気に入ったらサポートをしてみませんか?