Python3+BeautifulSoup4+Cloud Functions로 1시간에 만드는 표고버섯
16411 단어 파이썬cloudfunctions슬랙gcpBeautifulSoup
소개
표고 버섯 운세 사이트를 아십니까?
h tps://ゔぉ구에기 rl. jp / 호로 s 코페 / 표고 버섯 /
폐사에서는, 잘 맞으면 사장을 필두로 공전의 큰 붐을 일으키고 있습니다.
매주 월요일에 갱신되어 LINE도 있지만, 모두가 보는 Slack에 흘러 오면 기뻐요! 라고 혼자 시작하면 의외로 간단하고 1시간에 할 수 있었다는 이야기.
만든 것
표고 버섯의 갱신 일시인 월요일 12시에 Slack에 스크래핑 한 각 별자리의 점의 결과를 흘리는 것만!
표고 버섯 봇의 GitHub
환경
표고 버섯의 갱신 일시인 월요일 12시에 Slack에 스크래핑 한 각 별자리의 점의 결과를 흘리는 것만!
표고 버섯 봇의 GitHub
환경
이런 느낌이 듭니다.
이름은 기본 「siitake」로 통일해 갑니다.
Cloud Scheduler 등록
표고 버섯의 갱신 빈도에 맞추어 매주 월요일의 12시부터로 설정합니다.
이 후 Pub/Sub를 부르므로 타겟은 Pub/Sub, 주제는 "siitake"로 둡니다.
Cloud Pub/Sub 등록
이 주제 만들기 버튼을 눌러 Scheduler와 일치하도록 "siitake"라는 주제 ID로 만듭니다.
Cloud Functions 만들기
위와 같이 트리거를 Cloud Pub/Sub, 주제를 방금 등록한 'siitake'로 작성합니다.
main.py 만들기
미리 slackweb
및 bs4
를 설치하십시오.
$ pip install bs4 slackweb
흐름
1. 12 별자리의 영어 목록을 준비한다
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
2. 오늘의 날짜를 취득. 별자리 목록을 루프로 돌리면서 기본 URL에 각 별자리, 날짜를 맞추고 bs4
에서 매번 HTML 얻기
base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
3. bs4로 매번 HTML을 취득하고 싶은 부분에 맞는다 class="a-text"
부분을 얻는다
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
4. Slack에 보내는 메시지에 맞게 텍스트를 맞추고 송신!
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
구현
모든 코드는 아래에 생략
import requests
import datetime as dt
import os
import slackweb
from bs4 import BeautifulSoup
def siitake(a, b):
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
구현은 위가 됩니다.
이 외에도
이 주제 만들기 버튼을 눌러 Scheduler와 일치하도록 "siitake"라는 주제 ID로 만듭니다.
Cloud Functions 만들기
위와 같이 트리거를 Cloud Pub/Sub, 주제를 방금 등록한 'siitake'로 작성합니다.
main.py 만들기
미리 slackweb
및 bs4
를 설치하십시오.
$ pip install bs4 slackweb
흐름
1. 12 별자리의 영어 목록을 준비한다
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
2. 오늘의 날짜를 취득. 별자리 목록을 루프로 돌리면서 기본 URL에 각 별자리, 날짜를 맞추고 bs4
에서 매번 HTML 얻기
base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
3. bs4로 매번 HTML을 취득하고 싶은 부분에 맞는다 class="a-text"
부분을 얻는다
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
4. Slack에 보내는 메시지에 맞게 텍스트를 맞추고 송신!
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
구현
모든 코드는 아래에 생략
import requests
import datetime as dt
import os
import slackweb
from bs4 import BeautifulSoup
def siitake(a, b):
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
구현은 위가 됩니다.
이 외에도
미리
slackweb
및 bs4
를 설치하십시오.$ pip install bs4 slackweb
흐름
1. 12 별자리의 영어 목록을 준비한다
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
2. 오늘의 날짜를 취득. 별자리 목록을 루프로 돌리면서 기본 URL에 각 별자리, 날짜를 맞추고
bs4
에서 매번 HTML 얻기 base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
3. bs4로 매번 HTML을 취득하고 싶은 부분에 맞는다
class="a-text"
부분을 얻는다for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
4. Slack에 보내는 메시지에 맞게 텍스트를 맞추고 송신!
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
구현
모든 코드는 아래에 생략
import requests
import datetime as dt
import os
import slackweb
from bs4 import BeautifulSoup
def siitake(a, b):
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
구현은 위가 됩니다.
이 외에도
import requests
import datetime as dt
import os
import slackweb
from bs4 import BeautifulSoup
def siitake(a, b):
constellations = [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
]
constellations_kana = [
"【おひつじ座】",
"【おうし座】",
"【ふたご座】",
"【かに座】",
"【しし座】",
"【おとめ座】",
"【てんびん座】",
"【さそり座】",
"【いて座】",
"【やぎ座】",
"【みずがめ座】",
"【うお座】"
]
base_url = "https://voguegirl.jp/horoscope/shiitake/"
date = dt.date.today()
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
for c, c_kana in zip(constellations, constellations_kana):
url = base_url + c + "/" + date.strftime("%Y%m%d") + "/"
res = requests.get(url)
soup = BeautifulSoup(res.text)
res.close()
base_txt = soup.find("div", class_="a-text").text
txt = c_kana + "\n\n" + base_txt.strip() + "\n\n続きはこちら⇒ " + url
slack.notify(text=txt)
SLACK_URL
로 incoming webhook URL을 등록 bs4
및 slackweb
를 등록해야 합니다. 결과
이것을 보고 모두 해피가 되었습니다.
감상이라든가
처음으로 Cloud Functions를 사용했지만 몹시 간단하게 할 수 있어서 즐거웠다.
또한 파이썬에서의 스크래핑도 처음이었지만 직관적이고 사용하기 쉬웠다.
무엇보다, 무엇인가를 만드는 것은 즐겁고, 사내에서 모두 기뻐해 주면 기쁘다!
Reference
이 문제에 관하여(Python3+BeautifulSoup4+Cloud Functions로 1시간에 만드는 표고버섯), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki5555/items/f6b7081f23e45367ce72
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
처음으로 Cloud Functions를 사용했지만 몹시 간단하게 할 수 있어서 즐거웠다.
또한 파이썬에서의 스크래핑도 처음이었지만 직관적이고 사용하기 쉬웠다.
무엇보다, 무엇인가를 만드는 것은 즐겁고, 사내에서 모두 기뻐해 주면 기쁘다!
Reference
이 문제에 관하여(Python3+BeautifulSoup4+Cloud Functions로 1시간에 만드는 표고버섯), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuki5555/items/f6b7081f23e45367ce72텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)