2026, 새로운 도약을 시작합니다.

파이썬을 하려고하는데요 ㅠ 질문 부탁..

search_word 배열 넣고

url로 선언하려하는데 ㅠ  안되드라구요...혹시 틀린걸까요..? 여러개 키워드하고싶은데..

(네이버 뉴스에 면종류 기사 알림입니다!)

도움 좀 부탁드립니다 ㅠ

Copy


import requests

from bs4 import BeautifulSoup

import telepot

#시간 마다 알람 지정용

from apscheduler.schedulers.blocking import BlockingScheduler

 

#서치 키워드

search_word = ['라면','라멘','국수']

#텔레그램 봇 생성

token = 'xxx'

bot = telepot.Bot(token=token)

 

#스케줄러 생성

sched = BlockingScheduler()

 

#기존에 보냈던 링크를 담아둘 리스트

old_links = []

 

#링크 추출 함수

def extract_links(old_links=[]):

    url = f'https://search.naver.com/search.naver?where=news&query={search_word}&sm=tab_opt&sort=1'

    req = requests.get(url)

    html = req.text

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

 

    search_result = soup.select_one('.list_news')

    news_list = search_result.select('.bx > .news_wrap .news_tit')

 

    links = []

    for news in news_list[:5]:

        link = news['href']

        links.append(link)

 

    new_links=[]

    for link in links:

        if link not in old_links:

            new_links.append(link)

    print(new_links)

 

    return new_links

 

#이전 링크를 매개변수로 받아서 비교 후, 새로운 링크만 출력

#차후 이 부분을 메세지 전송 코드로 변경하고 매시간 동작하도록 설정

#새로운 링크가 없다면 빈 리스트 반환

def send_links():

    global old_links

    new_links = extract_links(old_links)

    if new_links:

        for link in new_links:

            bot.sendMessage(chat_id='xxx', text = link)

    old_links += new_links.copy()

    old_links = list(set(old_links))

 

#최초 시작

send_links()

 

#스케줄 설정

#5초 마다 해당 코드 반복 실행

sched.add_job(send_links, 'interval', seconds = 5)

 

#시작

sched.start()

 

답변 1개

url 에 search_word 를 매핑이 제대로 되는지 보세요

아니면 search_word 를 global 로 해보시든지요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고