Форум сайта python.su
0
Здравствуйте. Я написал бота который парсит объявления с сайта и результат нового сообщения отправляет в телеграм. Однако не могу сделать так, чтобы бот не отправлял те сообщения, которые уже отправил, тоесть,как сделать так , чтоб бот отправлял только новые сообщения и куда это вставлять? Вот полностью весь код :
#НА ПРИМЕРЕ САЙТА onliner.by
from flask import Flask
from flask import request
from flask import jsonify
import requests
import json
from datetime import datetime
from bs4 import BeautifulSoup
from flask_sslify import SSLify
app = Flask(__name__)
sslify = SSLify(app)
URL = 'https://api.telegram.org/bot672241145:AAFPHlsPN8RHhyGBwZZbGvMI7vZUDts6agE/'
def write_json(data, filename='answer.json'):
with open('answer.json','w') as f:
json.dump(data,f,indent=2,ensure_ascii=False)
def send_message(chat_id,text='Подождите секунду'):
url = URL + ‘sendMessage’
answer = {'chat_id': chat_id,'text': text}
r = requests.post(url, json = answer)
return r.json()
def get_html(urls):
r = requests.get(urls)
return r.text
def get_all_links(html):
#блок который парсим
soup = BeautifulSoup(html, ‘lxml’)
divs = soup.find('table', class_='ba-tbl-list__table')
divs = soup.find_all('h2',class_='wraptxt')
links =
# теги, потом изменю или добавлю дополнения
for div in divs:
a = div.find('a').get('href')
link = 'https://baraholka.onliner.by' + a.strip('.') +'\n ‘ #+ b #’ ‘ + b +’\n ‘# ’ ‘ + c + str(d) +’\n ‘
links.append(link)
return links
def mains():
start = datetime.now() # время
urls = ’https://baraholka.onliner.by/viewforum.php?f=214'
all_links = get_all_links(get_html(urls))
result_list =
for i in all_links:
result_list.append (i)
return result_list
@app.route('/',methods
def index():
if request.method == ‘POST’:
r = request.get_json()
chat_id = r
message = r
send_message(chat_id, text = mains())
#return jsonify(r)
sleep(2)
return mains()
#https://api.telegram.org/bot672241145:AAFPHlsPN8RHhyGBwZZbGvMI7vZUDts6agE/setWebhook?url=https://b2289b30.ngrok.io
#https://api.telegram.org/bot672241145:AAFPHlsPN8RHhyGBwZZbGvMI7vZUDts6agE/setWebhook?url=https://dykat90.pythonanywhere.com/
if __name__ == ‘__main__’:
app.run()
Офлайн
294
Dykat для нчала, не мешало бы научиться вставлять свой код в теги
[code python][/code]
[code python][/code]
Офлайн
0
from flask import Flask from flask import request from flask import jsonify import requests import json from datetime import datetime from bs4 import BeautifulSoup from flask_sslify import SSLify app = Flask(__name__) sslify = SSLify(app) URL = 'https://api.telegram.org/bot672241145:AAFPHlsPN8RHhyGBwZZbGvMI7vZUDts6agE/' def write_json(data, filename='answer.json'): with open('answer.json','w') as f: json.dump(data,f,indent=2,ensure_ascii=False) def send_message(chat_id,text='Подождите секунду'): url = URL + 'sendMessage' answer = {'chat_id': chat_id,'text': text} r = requests.post(url, json = answer) return r.json() def get_html(urls): r = requests.get(urls) return r.text def get_all_links(html): #блок который парсим soup = BeautifulSoup(html, 'lxml') divs = soup.find('table', class_='ba-tbl-list__table') divs = soup.find_all('h2',class_='wraptxt') links = [] # теги, потом изменю или добавлю дополнения for div in divs: a = div.find('a').get('href') #b = div.find('div',class_='content').text.strip() link = 'https://baraholka.onliner.by' + a.strip('.') +'\n ' #+ b #' ' + b +'\n '# ' ' + c + str(d) +'\n ' links.append(link) return links def mains(): start = datetime.now() # время urls = 'https://baraholka.onliner.by/viewforum.php?f=214' all_links = get_all_links(get_html(urls)) result_list = [] for i in all_links: result_list.append (i) return result_list[6] @app.route('/',methods=['POST', 'GET']) def index(): if request.method == 'POST': r = request.get_json() chat_id = r['message']['chat']['id'] message = r['message']['text'] send_message(chat_id, text = mains()) #return jsonify(r) sleep(2) return mains() #https://api.telegram.org/bot672241145:AAFPHlsPN8RHhyGBwZZbGvMI7vZUDts6agE/setWebhook?url=https://b2289b30.ngrok.io #https://api.telegram.org/bot672241145:AAFPHlsPN8RHhyGBwZZbGvMI7vZUDts6agE/setWebhook?url=https://dykat90.pythonanywhere.com/ if __name__ == '__main__': app.run()
Офлайн