테스트 사이트 - 개발 중인 베타 버전입니다

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

빈뽀르 3년 전 조회 1,927

search_word 배열 넣고

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

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

도움 좀 부탁드립니다 ㅠ

</p>

<p>import requests</p>

<p>from bs4 import BeautifulSoup</p>

<p>import telepot</p>

<p>#시간 마다 알람 지정용</p>

<p>from apscheduler.schedulers.blocking import BlockingScheduler</p>

<p> </p>

<p>#서치 키워드</p>

<p>search_word = ['라면','라멘','국수']</p>

<p>#텔레그램 봇 생성</p>

<p>token = 'xxx'</p>

<p>bot = telepot.Bot(token=token)</p>

<p> </p>

<p>#스케줄러 생성</p>

<p>sched = BlockingScheduler()</p>

<p> </p>

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

<p>old_links = []</p>

<p> </p>

<p>#링크 추출 함수</p>

<p>def extract_links(old_links=[]):</p>

<p>    url = f'<a href="https://search.naver.com/search.naver?where=news&query={search_word}&sm=tab_opt&sort=1'" target="_blank" rel="noopener noreferrer">https://search.naver.com/search.naver?where=news&query={search_word}&sm=tab_opt&sort=1'</a></p>

<p>    req = requests.get(url)</p>

<p>    html = req.text</p>

<p>    soup = BeautifulSoup(html, 'html.parser')</p>

<p> </p>

<p>    search_result = soup.select_one('.list_news')</p>

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

<p> </p>

<p>    links = []</p>

<p>    for news in news_list[:5]:</p>

<p>        link = news['href']</p>

<p>        links.append(link)</p>

<p> </p>

<p>    new_links=[]</p>

<p>    for link in links:</p>

<p>        if link not in old_links:</p>

<p>            new_links.append(link)</p>

<p>    print(new_links)</p>

<p> </p>

<p>    return new_links</p>

<p> </p>

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

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

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

<p>def send_links():</p>

<p>    global old_links</p>

<p>    new_links = extract_links(old_links)</p>

<p>    if new_links:</p>

<p>        for link in new_links:</p>

<p>            bot.sendMessage(chat_id='xxx', text = link)</p>

<p>    old_links += new_links.copy()</p>

<p>    old_links = list(set(old_links))</p>

<p> </p>

<p>#최초 시작</p>

<p>send_links()</p>

<p> </p>

<p>#스케줄 설정</p>

<p>#5초 마다 해당 코드 반복 실행</p>

<p>sched.add_job(send_links, 'interval', seconds = 5)</p>

<p> </p>

<p>#시작</p>

<p>sched.start()</p>

<p> </p>

<p>

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

답변 1개

3년 전

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

 

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

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

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

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

로그인