Как при парсинге отображать только новые посты?
Мне нужен парсер, который сообщит о всех новых постах на сайте, но только если ранее они не отображались. Например, пользователь запускает парсер после долгой паузы, во время которой на сайте вышло несколько новостей и просто отображает их текст, пропуская старые посты.
Так понимаю, что для этого нужно вести какой-либо текстовый документ с датами этих постов или что-то в этом роде.
Сейчас мой код выглядит так:
import requests
from bs4 import BeautifulSoup
url = 'https://www.debian.org/News/'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0'}
response = requests.get(url, headers=header)
if response.status_code == 200:
html = response.text
soup = BeautifulSoup(html, 'lxml')
table = soup.find('body')
date = table.find('tt').text.strip()
with open('date.txt', 'w') as f:
f.write(date)
Что нужно добавить, чтобы получить задуманное?
UDP Выложу готовый код, может быть пригодится кому...
import requests
from bs4 import BeautifulSoup
url = 'https://www.debian.org/News/'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0'}
response = requests.get(url, headers=header)
if response.status_code == 200:
html = response.text
soup = BeautifulSoup(html, 'lxml')
table = soup.find('body')
date = table.find_all('tt')
news = table.find_all('strong')
old_date = open("date.txt", "r").read().splitlines()[0]
for d,n in zip(date,news):
dd = d.text.strip()
nn = n.text.strip()
if dd == old_date:
break
print(dd,nn)
old_date = open('date.txt', 'w')
old_date.write(date[0].text.strip())
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Приблизительно заготовка будет выглядеть так:
old_date = '[09 May 2020]' # эту дату надо читать из файла
date = table.find_all('tt')
news = table.find_all('strong')
for d,n in zip(date,news):
dd = d.text.strip()
nn = n.text.strip()
if dd == old_date:
break
print(dd,nn)
old_date = date[0].text.strip() # а тут обратно в файл записать