2011-07-04 33 views
0

我有兴趣为分类构建一个网络爬虫。抓取的分类广告的问题是这些项目不断到期。当用户在我的网站上搜索时,如果列表已过期,是否有方法可以“即时”检查?抓取分类网站后,如何检查列表是否已过期?

基本上,如果我的页面显示20条记录,如何检查这是否过期?有没有办法检查“即时”?隐藏此记录,而不是将其显示给用户?也许一个.js脚本checksDeletedRecords()

http://carsforsale.com/used_cars_for_sale/2004_Honda_Civic_136820531

回答

1

你可以写的东西会(通过cron作业)定期检查上市,看它是否过期。

如果您正在抓取的网页有某种指示符会告诉您它何时会过期(“2011年7月8日上市到期”),您的抓取工具可以解析并将其存储在数据库中。那么就是从你的最后过滤出过期的问题。大多数分类网站在其列表上有一定的时间限制(无论是在列表上还是作为网站政策),所以这种方法将是您最好的选择。

编辑:和往常一样,当你爬,尊重之前该网站的robots.txt

+0

问题在于cronjob_time&now之间仍然存在时间差。有没有办法在运行中检查结果? – phpboy

+0

如果你能弄清楚什么时候上市最有可能过期并将其存储在您的最终目标中,您可以随时进行此操作,正如我所描述的那样。实时操作并不可行 - 并且不可取 –

+0

我已经看到分类的聚合器网站,它们会使重复或过期的记录崩溃。在飞行中。它的响应非常好...... – phpboy

0

我做了这样的事情。我的解决方案是将LastFound属性添加到列表中。每次抓取网站并找到相同的列表时,请更新LastFound标志。

如果您随后每天都抓取该网站,则可以假定所有在最后一天未找到的物品都已过期。显然,如果您以较短的时间间隔抓取网站,您的数据可能会更新。

这可能无法满足您的“实时”需求,但解决方案可能是检查每次您想要搜索时原始页面是否仍然存在。这将是非常低效的,但我不会推荐它。

+0

所以如果我显示20个结果......检查所有20个结果将是荒谬的看看它们是否有效。 .. – phpboy

+0

这就是我的syaing,是的。这是您的网站在每次搜索时必须提出的20个额外请求。如果你想获得最新的细节,但我认为这是一个难题,但正如Jahufar指出的那样,如果有一个上市结束日期,你可以使用它。如果没有,您可能必须解决可能过时几个小时的列表 - 取决于您的抓取速度 – Beno

+0

我可以只抓取“标题” – phpboy