【发布时间】:2010-01-12 19:44:47
【问题描述】:
我正在使用爬取一个视频网站,该网站的内容经常过期。我正在考虑使用scrapy 进行爬取,但不确定如何删除过期项目。
检测物品是否过期的策略是:
- 蜘蛛网站的“delete.rss”。
- 每隔几天,尝试重新加载内容页面并确保它仍然有效。
- 爬取网站内容索引的每一页,如果找不到视频,则将其删除。
请告诉我如何删除 scrapy 中的过期项目。我将通过 django 将我的 scrapy 项目存储在 mysql DB 中。
2010-01-18 更新
我找到了一个可行的解决方案,但仍可能不是最佳的。我在我同步的每个视频上都维护一个“found_in_last_scan”标志。当蜘蛛启动时,它将所有标志设置为 False。完成后,它会删除仍将标志设置为 False 的视频。我通过附加到signals.spider_opened 和signals.spider_closed 来做到这一点,请确认这是一个有效的策略并且没有任何问题。
【问题讨论】:
-
什么是'delete.rss'?您究竟如何存储抓取的内容?过期物品实际上是什么意思?这似乎是一个“为我编写代码”的问题,而不是一个实际的问题。
-
“过期项目”是其 URL 不再有效的视频。许多网站提供“delete.rss”提要,告诉您他们何时删除了视频,但有些网站没有。当然,这一定是scrapy的常见问题。 Scrapy 的网站提供了一个示例,说明了如何从 bittorrent 网站联合内容,但没有提及它如何检测 torrent 何时不再存在。
-
你抓取的所有网站是否都为你提供了 delete.rss?
-
只有一些网站有 delete.rss,我不确定它是否 100% 可靠,即使它存在。
标签: python screen-scraping scrapy