Robots.txt协议
搜索引擎是靠Web Robot(又称Spider)来收集互联网上浩如烟海的网页的。Spider就像一个旅行家一般,不知疲倦地奔波于万维网的空间,将遇到的页面收集下来供搜索引擎索引。对于一个网站的管理员来说,如果想指定某些不希望搜索引擎访问的内容,该如何去做呢?他需要的就是Robots Exclusion Protocol协议,这里简单的称它做Robots.txt协议。
Robots.txt是一个放置在网站根目录下的纯文本文件。举例来说,当Spider访问一个网站(比如 http://www.example.com)时,首先会检查该网站中是否存在 http://www.example.com/robots.txt这个文件,如果Spider找到这个文件,它就会根据这个文件的内容,来确定它访问权限的范围。
http://www.robotstxt.org是robots.txt协议的Home Page,在这个站点上你可以找到很多robots.txt协议相关的资料。Robots.txt协议在 http://www.robotstxt.org/wc/norobots.html(本地拷贝)上有比较详尽的描述。
你的任务就是编写Spider中的一个逻辑单元,用来判断一个网站的一些URL是否被禁止抓取。对方网站的站点在这里假设是www.example.com,这个Spider的User-agent当然是Baiduspider。注意,这个逻辑单元除了本身的判断逻辑要求与robots.txt协议一致外,还要注意容错的问题。互联网上纷繁芜杂,会出现很多意想不到的错误。如何能够对一个对错参半的robots.txt进行解析,把其中正确的挑拣出来、把错误的部分忽略掉,也是一个不小的挑战哦。都会遇到什么错误?在开始爬行互联网之前,谁都不知道。在本题中,你的程序应当逐一对robots.txt的各行进行处理,忽略所有格式错误或者非期望的行。
输入格式
第一行是一个非负整数m,表示robots.txt文件的行数,后面跟m行,是robots.txt的全文。下一行包含一个非负整数n, 表示URL的行数,后面跟n行URL,这个就是你要判断的URL的列表。robot.txt中可能有错误,但所有URL均合法。
输出格式
每条URL输出一行,每行两列,第一列是一个数字,如果这条URL被禁止,则输出0,否则输出1。第二列是这条URL本身。两部分以一个空格隔开。
样例输入 例
2
User-agent: *
Disallow: /tmp/
2
http://www.example.com/index.html
http://www.example.com/tmp/somepage.html
样例输出 例
1 http://www.example.com/index.html
0 http://www.example.com/tmp/somepage.html
评分规则
程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分;
要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;
本题包含20个测试点,均满足0<=n,m<=100。