2012-08-14 140 views
0

我开发了一个网络爬虫,现在我想尊重我爬行的网站的robots.txt文件。让PHP网络爬虫尊重任何网站的robots.txt文件

我看,这是robots.txt文件结构:

User-agent: * 
Disallow: /~joe/junk.html 
Disallow: /~joe/foo.html 
Disallow: /~joe/bar.html 

我能读,一行行,然后使用带有空格爆炸作为分隔符来查找数据。

是否有其他方式可以加载整个数据?

这种类型的文件是否有像XPath一样的语言?

还是我必须解释整个文件?

任何帮助,欢迎,甚至链接,重复若发现...

+0

嘿!我只是好奇,你是如何解决用户代理的一部分?你写了一个特殊的正则表达式来匹配用户代理的结果:*? – directory 2012-10-31 15:39:40

+0

当我使用cURL时,用户代理已经存储在数据库中,所以我知道我的cURL算法应该识别哪个用户代理;和平的蛋糕 – 2012-11-01 06:51:48

+0

好吧,我做了下面的事情,我必须每小时蜘蛛100个网站。我每周读一次robots.txt,用一个正则表达式代替用户代理:*部分(包括禁止等等)直到下一个用户代理(如果存在)。比我在每个网站的数据库中存储路径为正则表达式模式。比我在我的蜘蛛中使用正则表达式来看我是否被允许蜘蛛获得我所获得的链接的路径。你如何看待这个? :)干杯! – directory 2012-11-02 09:32:49

回答

1

的结构非常简单,所以你能做的最好的事情可能是分析你自己的文件。我会逐行读取它,正如您所说的查找关键字,如用户代理,Disallow等。

+0

是的,那是我会做什么,如果我没有得到明智的答案;我期待得到一个明智的答案,因为我发现XPath有它自己的语言:d;也许我很幸运,我学到了新的 – 2012-08-14 13:51:27

+0

afaik XPath是XML专用的,因此不会帮助你在robots.txt文件中加入节点... – user871784 2012-08-14 14:11:51

+0

只是问,确保 – 2012-08-14 20:19:28