我想抓取可以更新的数据。当我要计划搜寻器每次运行时仅搜寻更新的零件时,该如何处理?我正在用Beautifulsoup。

最佳答案

要仅隔离新的过帐,您需要找到某种主键,保证该主键对于每个结果都是唯一的。这可以是url,内部ID等。一旦找到唯一值,就需要在会话之间存储它。对于快速查找的东西,我会使用一组。这是一个基本示例,可以使用集和内置的pickle模块维护您在会话之间看到的结果。

我们将假定您已将结果隔离在列表elements中,并且每个元素都是带有<a>标记且具有唯一href值的BeautifulSoup对象。

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)


关于python - 如何在每次运行时仅对更新的零件进行爬网,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58796653/

10-12 05:30