首页 > 解决方案 > Python:抓取分类网站。如何仅返回上次运行的最新条目?

问题描述

我想留意一个分类列表页面,只要有新东西出现,它就会通知我。我在 bs4 中构建了一个相当幼稚的刮板,它抓取一个页面并刮掉商品、价格以及该商品的上市时间。

类似的东西

page = requests.get('https://sg.carousell.com/search/products/?collection_id=13&query=herman%20miller&sort_by=time_created%2Cdescending')
soup = BeautifulSoup(page.text, 'html.parser')
for item in soup.find_all(class_='_-W'):
  item.find(class_='_-m').text
  item.find(class_='_-t').text

到那时,我会将它连接到某个机器人,每次作业运行时我都会得到一个 ping。

但是,我只想在出现新事物时收到警报。一种选择是以某种方式存储找到的第一个项目(例如作为 txt),然后比较每个项目的唯一 ID。如果一个项目的 ID 高于前一次运行,那么它必须是新的。

但是我觉得这有点笨拙,想知道还有哪些其他选项可用。在运行之间跟踪列表中的新项目听起来像是一个肯定已经解决了很多次的问题,但我在搜索中没有发现任何解决方案。

标签: pythonbeautifulsoupscreen-scraping

解决方案


由于您定期运行刮板,因此您可以查看“时间”并了解它是否是新的。

<time class="_-t"><span>5 days ago</span></time>

推荐阅读