텔레그렘으로 키워드 크롤링결과 보내기

문과생도 AI에서의 과제인 키워드를 크롤링한 결과물을 바로 텔레그램으로 받아보면 좋겠다는 생각으로 만들어보았다. 돈이 되는 경매, 부동산뉴스, 정책, 아파트실거래등 실시간으로 받아보면 좋을 것 같다. 이미 주식하는 사람들이 실시간 뉴스들 많이 이용하고 있으니…




챗봇이름를 정하면 주소와 API token이 나오고 , chat_id를 탐색하면 된다.

이거는 시키는대로 하면 되니, 어려움은 없다.


이미 키워드 크롤링하는 코딩이 있으니, 그것을 이용하고, 그 결과를 텔레그램에 보내면 된다.

아까 만든 Gradio UI에 텔레그램에 보내는 코딩을 접목한다.

최종 코딩결과는 다음과 같다.

import gradio as gr

from bs4 import BeautifulSoup

import requests

import json

# 텔레그램 봇 설정

bot_token = "ㅌㅌㅌㅌㅌ"

chat_id = "ㅌㅌㅌ"

def send_message(message):

url = f"https://api.telegram.org/bot{bot_token}/sendMessage"

data = {"chat_id": chat_id, "text": message}

try:

requests.post(url, data=data)

except requests.exceptions.RequestException as e:

print(f"Error sending message: {e}")

def fetch_and_send_news(keyword):

base_url = "https://search.naver.com/search.naver?where=news&query="

search_url = base_url + keyword

news_list = []

page = 1

while len(news_list) < 100:

url = f"{search_url}&start={page}"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

articles = soup.select("div.news_wrap.api_ani_send")

if not articles:

break

for article in articles:

date_info = article.select_one("span.info")

if date_info:

time_text = date_info.text

if "분 전" in time_text or "시간 전" in time_text or "오늘" in time_text or "1일 전" in time_text or "2일 전" in time_text:

title_element = article.select_one("a.news_tit")

title = title_element.get('title')

link = title_element['href']

news_list.append(f"{title}\n{link}")

if len(news_list) >= 100:

break

page += 10

news_string = "\n\n".join(news_list)

send_message(news_string) # Send the news list to Telegram

return news_string # Return the news list to display in Gradio

# Gradio 인터페이스 설정

iface = gr.Interface(

fn=fetch_and_send_news,

inputs=gr.Textbox(lines=2, placeholder="Enter Keywords for News Search..."),

outputs=gr.TextArea(label="News Results"),

title="Naver News Search and Telegram Notification",

description="Type keywords to search for news articles on Naver and send results to Telegram."

)

iface.launch()


결과물은 다음과 같다.




Insight

  1. 입력, 출력을 다양한 모습으로 조절가능하다

  2. 키워드를 부동산, 부동산정책, 경매, 아파트등 다양하게 넣어서 텔레그램으로 받아보자.

  3. 이것으로 응용할 수 있는게 많겠다.

    1. 일정시간마다 결과를 업데이트하는 기능추가등…

    2. 카카오톡, 네이버블로그, 이메일등으로 확장


#문과생도AI#

2
3개의 답글

👉 이 게시글도 읽어보세요