как сканировать только обновленные части при каждом запуске - PullRequest
1 голос
/ 11 ноября 2019

Я хочу сканировать данные, которые могут быть обновлены. Как мне подойти к этому, когда я хочу настроить сканер на сканирование только обновленных частей при каждом запуске? Я использую Beautifulsoup.

1 Ответ

0 голосов
/ 11 ноября 2019

Чтобы изолировать только новые публикации, вам нужно найти какой-то первичный ключ, который гарантированно будет уникальным для каждого результата. Это может быть URL, внутренний идентификатор и т. Д. После того, как вы нашли уникальное значение, вам нужно сохранить его между сеансами. Для быстрого поиска я бы использовал набор. Вот базовый пример, который сохраняет результаты, которые вы видели между сеансами, используя наборы и встроенный модуль pickle.

Мы будем предполагать, что вы изолировали результаты в списке elements, и что каждый элемент являетсяОбъект BeautifulSoup с тегом <a> с уникальным значением href.

import os
import pickle

if not os.path.exists('seen.pickle'):  # If the seen file doesnt exist, create it.
    with open('seen.pickle', 'wb') as file:
        pickle.dump(set(), file)

with open('seen.pickle', 'rb') as file:  # Load the seen file so we can reference it.
    seen = pickle.load(file)

for element in elements:
    if not element['href'] in seen:
        # Your own code here
        seen.add(element['href'])  # Add it to seen so it is never parsed again

with open('seen.pickle', 'wb') as file:  # Save the seen file.
    pickle.dump(seen, file)


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...