【发布时间】:2011-09-19 22:33:05
【问题描述】:
我编写了一个非常基本的爬虫,它从网站上抓取产品信息以放入数据库。
除了某些网站似乎对页面的多个部分有不同的 URL 之外,一切都很好。例如,产品 url 可能是:
http://www.example.com/product?id=52
那么,它可能有另一个 URL 用于不同的部分,例如 cmets 等:
http://www.example.com/product?id=52&revpage=1
我的抓取工具将此视为一个不同的 URL。我发现了一些网站,其中一种产品有数百个不同的 URL。我已经添加了逻辑来忽略 url 中的哈希后的任何内容以避免锚点,但我想知道是否有人有任何建议来避免这个问题?可能有一个我看不到的简单解决方案。
目前它减慢了抓取/抓取过程,其中一个网站可能只有 100 个产品,它添加了数千个 URL。
我考虑过忽略查询字符串,甚至是查询字符串的某些部分,但产品 ID 通常位于查询字符串中,所以我想不出办法,没有为每个站点的 URL 结构编写异常
【问题讨论】:
-
您可以将您的爬虫配置为停止在任何以产品 URL 开头的 URL 中进行爬取。在您的示例中,一旦您在
http://www.example.com/product?id=52找到产品,请不要访问以该网址开头的任何网址。这行得通吗? -
嗯,是的,我认为这有一些可能性,但我仍然需要先确定这一点,然后让爬虫知道。但是,我确实已经有一个网站“个人资料”,所以肯定有潜力
-
我认为您不需要先识别任何东西。假设你从一个索引页面开始,下一层到产品描述页面,你不需要提前配置任何东西。一旦您的爬虫找到产品,它就会将信息存储在您的数据库中并保存 url 以与它找到的新 url 进行比较。请参阅下面的答案。
标签: php mysql web-crawler unique