가격 모니터링 슬랙 봇 구축 방법 🤑
15903 단어 botwebscrapingpythontutorial
먼저 gazpacho , hickory 및 slackclient을 설치합니다.
pip install gazpacho hickory slackclient
스크랩하려는 page 식별:
URL을 잡고 텍스트 편집기를 열고(I like Atom),
mario.py
라는 파이썬 파일을 만들고 gazpacho를 가져옵니다.from gazpacho import get, Soup
get
함수로 html을 다운로드하고 Soup
래퍼에 채웁니다.url = "https://www.bestbuy.ca/en-ca/product/paper-mario-the-origami-king-switch/14643866"
html = get(url)
soup = Soup(html)
페이지를 마우스 오른쪽 버튼으로 클릭하고 "요소 검사:
특정 태그 및 요소 속성에 유의하십시오.
이 경우 페이지의 관련 html 블록은 다음과 같습니다.
<div class="price_FHDfG large_3aP7Z " aria-hidden="true">
$79
<span class="rightEndPrice_6y_hS">99</span>
</div>
부분 일치(
find
)가 활성화된 strict=False
메서드를 사용하여 가격을 추출하고 부동 소수점 형식으로 지정합니다.price = soup.find("div", {"class": "price"}, strict=False)
lhs = price.text
rhs = price.find("span", {'class': 'rightEndPrice'}).text
price = float(f"{lhs}.{rhs}".replace('$', ""))
제목도 잡을 수 있습니다.
title = soup.find('h1', {'class': 'productName'}).text
모두 인쇄하여 모든 것이 작동하는지 확인하십시오.
print(title, price)
# Paper Mario: The Origami King (Switch) 79.99
전체 스크립트는 다음과 같아야 합니다.
# mario.py
from gazpacho import get, Soup
url = "https://www.bestbuy.ca/en-ca/product/paper-mario-the-origami-king-switch/14643866"
html = get(url)
soup = Soup(html)
title = soup.find('h1', {'class': 'productName'}).text
price = soup.find("div", {"class": "price"})
lhs = price.text
rhs = price.find("span", {'class': 'rightEndPrice'}).text
price = float(f"{lhs}.{rhs}".replace('$', ""))
print(title, price)
이 스크레이퍼를 예약하고 Slack Bot으로 전환하려면 https://api.slack.com/apps으로 이동하여 Create New App을 클릭합니다.
OAuth 및 권한을 찾아 클릭합니다.
chat:public.write 범위를 검색하고 추가합니다.
페이지 상단으로 다시 스크롤하여 앱을 Slack 작업 공간에 설치합니다.
생성된 토큰을
mario.py
파일에 문자열로 복사합니다.token = "xoxb-00000000-0000000000-00000000000"
여유 시간을 가져오고
WebClient
의 인스턴스를 인스턴스화합니다.from slack import WebClient
client = WebClient(token=token)
chat_postMessage
메서드를 사용하여 Slack 채널에 메시지를 보냅니다.
client.chat_postMessage(channel="mario", text=f"{price} - {title}")
다음과 같이 보이도록 모든 것을 리팩터링합니다.
# mario.py
from gazpacho import get, Soup
from slack import WebClient
token = "xoxb-00000000-00000000-000000000000000"
client = WebClient(token=token)
url = "https://www.bestbuy.ca/en-ca/product/paper-mario-the-origami-king-switch/14643866"
html = get(url)
soup = Soup(html)
title = soup.find('h1', {'class': 'productName'}).text
price = soup.find("div", {"class": "price"})
lhs = price.text
rhs = price.find("span", {'class': 'rightEndPrice'}).text
price = float(f"{lhs}.{rhs}".replace('$', ""))
client.chat_postMessage(channel="mario", text=f"${price} - {title}")
토큰을 일반 텍스트로 노출해서는 안 되지만 어쨌든...
명령줄에서 스크립트를 실행하여 작동하는지 확인합니다.
python mario.py
히코리를 사용하여 이 스크립트를 매 30초마다 예약하는 것은 매우 간단합니다. 명령줄에서
hickory schedule
를 사용하십시오.hickory schedule mario.py --every=30s
스케줄 실행 상태를 확인하려면 다음을 수행하십시오.
hickory status
# ID FILE STATE RUNS INTERVAL
# ea6b74 mario.py waiting 0 30
일정을 죽이려면 다음을 수행하십시오.
hickory kill mario.py
이 가격 모니터링 슬랙 봇이 매일 오전 9시에 실행되도록 예약하는 것이 아마도 더 현실적일 것입니다.
hickory schedule mario.py --every=@9:00am
그리고 그게 다야! 🤑
gazpacho 및/또는 hickory을(를) 사용하여 멋진 무언가를 만들었다면 연락해 주십시오. 그것에 대해 듣고 싶습니다!
Reference
이 문제에 관하여(가격 모니터링 슬랙 봇 구축 방법 🤑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maxhumber/how-to-build-a-price-monitoring-slack-bot-13fd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)