Web crawler 比价服务,如何有效使用一个站点地图文件?

Web crawler 比价服务,如何有效使用一个站点地图文件?,web-crawler,sitemap,Web Crawler,Sitemap,许多在线商店提供一个站点地图文件,其中包含以下形式的产品信息: ... <url> <loc>http://blabla.com/tbcart/pc/-DOOR-GYM-Full-Body-Exerciser-256p34168.htm</loc> <lastmod>2010-11-26</lastmod> <changefreq>weekly</ch

许多在线商店提供一个站点地图文件,其中包含以下形式的产品信息:

...
    <url>
          <loc>http://blabla.com/tbcart/pc/-DOOR-GYM-Full-Body-Exerciser-256p34168.htm</loc>
          <lastmod>2010-11-26</lastmod>
          <changefreq>weekly</changefreq>
    </url>
...
但是,为了让在线价格比较服务发挥作用,除了URL外,它还需要实际的产品价格。假设一个网上商店的典型站点地图包含20000个URL,您将如何获得每种产品的实际价格?这就是网站地图获取产品价格的方式吗

执行20000个Http Get请求很可能会导致网店阻止爬虫的IP:

谢谢


PS-这将如何扩展?就像一个有50000个链接的网站地图,假设每个星期天都需要重新编制索引,这意味着在一整天中每2秒发送一个请求,在这种情况下如何避免被阻止

您必须对所有URL执行GET,然后解析HTML以获取价格。你是对的,如果你访问了一个网站,他们可能会禁止你访问,所以你需要加入一些聪明的逻辑来分散负载,这样就不会对商店造成太大的影响。然后,如果你变得棘手,你可以确定是否有一些产品的价格变化更频繁,然后你可以重新扫描这些产品的价格。
同样值得注意的是,并非所有网站都提供网站地图,在这种情况下,你必须像搜索引擎一样抓取网站并解析产品URL的HTML。

你真的需要每个星期天重新编制网站索引吗?在您的示例中似乎设置了lastmod标记,因此您可以将整个网站作为一个基础进行爬网,然后在一周内检查修改的页面,而不仅仅是一天。如果站点已更改,您可以重新对其进行爬网,然后将此域上下一页的延迟设置为robots.txt中的值(如果已设置),或者几秒钟5可能已经可以


但是,这仅在店主在价格更改时更改lastmod标签时有效,而不仅仅是在他更改描述文本时有效。如果lastmod没有更改,您必须采用Haukman的方法,测量页面上更改之间的平均时间如果您重新爬网一个页面,并且价格没有更改,请延迟下次访问;如果它已经改变了,下次再尝试更快一点。

这正是网络爬虫所做的。但他们通常不会在固定的日期这样做,你应该建立一些逻辑来扫描更有可能发生变化的产品。例如,Google WebCrawler扫描热门网站的频率高于不太受欢迎的网站。如果您担心该网站可能因过度使用而过滤您的请求,您还必须意识到您的提议违反了该网站的AUP和/或知识产权。如果您希望使用这些数据,请联系相关网站并索取副本。未经所有者许可,擅自删除大量受版权保护的内容是盗窃。