Найти - Пользователи
Полная версия: как не отправлять одинаковые объявления
Начало » Python для новичков » как не отправлять одинаковые объявления
1
Dykat
Здравствуйте. Я написал бота который парсит объявления с сайта и результат нового сообщения отправляет в телеграм. Однако не могу сделать так, чтобы бот не отправлял те сообщения, которые уже отправил, тоесть,как сделать так , чтоб бот отправлял только новые сообщения и куда это вставлять? Вот полностью весь код :

#НА ПРИМЕРЕ САЙТА 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()
PEHDOM
Dykat для нчала, не мешало бы научиться вставлять свой код в теги
[code python][/code]
, чтобы не пропадало форматирование и текст в квадратных скобках.
По поводу, алгоритма, нужно запоминать время последнего объявление, и в следующий раз брать только те объявы, котороые рамещены позднее сохраненной даты.
Dykat
 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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB