기본 콘텐츠로 건너뛰기

[Python] Telegram Bot + Web scraper (beautiful soup) 개발 중

Telegram auto uploader + basic crawler .. ksg와 shipping news를 크롤링 하는데, 이후에 이걸 표준 모듈화해서 업로드 하려고 합니다. token 과 chat_id 를 삭제하고 업로드했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import schedule
import time
import telegram
 
import bs4
from urllib.request import urlopen
 
token = "Your token here"
bot = telegram.Bot(token = token)
#print(bot)
updates = bot.get_updates()
chat_id = "Your Chat Id here"
 
title_tag = []
text_tag = []
date_tag = []
 
bot.sendMessage(chat_id,"Server Intialized...")
 
def job():
    now = time.localtime()
    print("current time = ",str(now))
    url = "https://www.shippingnewsnet.com/news/articleList.html?sc_sub_section_code=S2N1&view_type=sm"
    html = urlopen(url)
 
    bs_obj = bs4.BeautifulSoup(html,"html.parser")
    ul = bs_obj.find("ul", {"class":"type2"})
 
    lis = ul.findAll("li")
    #print(lis)
 
    for li in lis:
        if li.find("h4",{"class":"titles"}) not in title_tag :
            title_tag.append(li.find("h4",{"class":"titles"}))
            bot.sendMessage(chat_id,title_tag[-1].text)
 
            text_tag.append(li.find("p",{"class":"lead line-6x2"}))
            bot.sendMessage(chat_id,text_tag[-1].text)
 
            date_tag.append(li.find("span",{"class":"byline"}))
            bot.sendMessage(chat_id,date_tag[-1].text[10:26])
            print('\n')
 
title_tag2 = []
text_tag2 = []
date_tag2 = []
 
def ksgcrawler():
    now = time.localtime()
    url = "https://www.ksg.co.kr/news/news_list.jsp?categoryCode=LPG"
    html = urlopen(url)
 
    bs_obj = bs4.BeautifulSoup(html,"html.parser")
    div = bs_obj.find("div", {"class":"news_wrap"})
 
    lis = div.findAll("li")
    #print(lis)
 
    for li in lis:
        if li.find("dt"not in title_tag2 :
            title_tag2.append(li.find("dt"))
            bot.sendMessage(chat_id,title_tag2[-1].text)
 
            text_tag2.append(li.find("dd"))
            bot.sendMessage(chat_id,text_tag2[-1].text)
 
            print('\n')
 
schedule.every(1).minutes.do(job)
schedule.every(1).minutes.do(ksgcrawler)
 
while True:
    schedule.run_pending()
    time.sleep(1)
cs

댓글

이 블로그의 인기 게시물

(VBA) 009 - 닫힌 파일에서 데이터 읽어오기 (ExecuteExcel4Macro)

#毎日育ちゃん可愛い大会 예시의 매크로 파일을 테스트 할 때는 저장된 폴더를 사용하실 폴더로 꼭 바꿔주세요! (pptx파일) pptx파일 (xlsx파일) 예제데이터파일   Macro파일 ★ 진행목적 : 왜 이걸 사용합니까 . 1) 행이나 열 , 또는 Sheet 과 같이 다른 특성을 가지는 1,2,3 차 데이터배열에 대한 처리 방법을 지금까지 설명드렸습니다 . 2) 그럼 이제 , 다른 파일에서 데이터를 읽어올 방법을 알아볼 필요가 있습니다 . 어째선가 회사의 데이터를 처리하다보면 , 주기적인 이름의 엑셀 파일 특정 Sheet, Cell 에 있는 경우가 많았습니다 . 3) 엑셀에서 이미 열려있는 파일의 참조는 ‘=‘ 을 사용하면 가능하지만 , 닫힌 파일은 데이터를 읽지 못합니다 . 4) 그래서 이를 처리하기 위해 VBA 의 ‘ExecuteExcel4Macro( 주소 )’ 를 사용합니다 ! ★ 다른 파일의 참조는 어떻게 합니까 ? 1) 열려 있는 다른 파일의 데이터를 읽는 방식은 ‘=‘ 을 입력하고 해당 Cell 을 클릭하면 됩니다 ! 2) 그러면 아래와 같이 (=‘ 파일이 있는 폴더 [ 파일명 ]Sheet 명 ’!Cell 주소 ) 의 형태로 기록 이 됩니다 . ★ 닫힌 파일에 대해서는 INDIRECT 는 사용이 되질 않습니다 ! 1) INDIRECT 로는 처리가 되질 않습니다 . 2) 어째선가 전에 사용하던 INDIRECT 를 사용하고 싶지만 , 사용이 되질 않습니다 . 검색을 해봐도 안된다는 답변만 있네요 ! 3) 파일이 하나 두 개라면 , 이전과 같이 ‘=‘ 를 쓰면 되겠지만 , 그러면 자동화를 통한 효율화가 불가능해지겠죠 ! 4) 그래서 이를 처리하기 위해 VBA 의 ‘ExecuteExcel4Macro( 주소 )’ 를 사용합니다 ! ★ ExecuteExcel4Macro 는 어떻게 사용합니까 ? 1) VBA 의 ExecuteExcel4Macro 란 매크로...

[Python] 크롤링 HTTP Forbidden 403 문제 해결

  코드에는 문제가 없는데 HTTP 403 Forbidden이 발생하길래.. 검색해보니까 서버사이드에서 저 같은 불법 크롤러를 거르는 메쏘드가 있는 모양입니다. 아래의 링크를 참고해서 해결했습니다 https://howtoworld.tistory.com/52 urllib에서 Request를 import 해줘야합니다. 1 2 3 4 def  hellenicshipping():     url  =  Request( "https://www.hellenicshippingnews.com/category/shipping-news/dry-bulk-market" ,headers = { 'User-Agent' :  'Mozilla/5.0' })     html  =  urlopen(url)     savefile  =   './hsn.txt' Colored by Color Scripter cs

(VBA) 004 - Object 이름으로 이미지 복사 붙여넣기

(VBA) 004- Object 이름으로 이미지 복사 붙여넣기 진행목적  :  왜 이걸 사용합니까 . → Object  이름을 사용해서 주기적 복사가 가능한 경우가 있습니다 .     ( 예  :  사진의 이름이  ‘ 사진  1’ ‘ 사진  2’…  로 되어있거나 , ‘Picture 1’, ‘Picture 2’…  로 됨 ) (설명자료는 여기) 설명자료 ( 예제파일은 여기 ) 예제파일 (VBA 진행에 대해) 이제 VBA 세션 자료를 필요할 때 보려고 이 블로그에 남기려고 해요. 앞선 001-003도 옮겨야겠습니다. 올해 내에 100가지 주제를 가지고 포스팅 할 수 있도록 할게요. ( 中谷 育 さんのイメージで に対して) 本当に可愛い中谷 育さんのイメージが 含まれています。 ありがとうございます。 何か問題があったら、教えてください。 直ちに処理します。