最近几天我编写了一个网络爬虫。我剩下的唯一问题是,“标准”网络爬虫是否会抓取像这样的链接查询: https ://www.google.se/?q=stackoverflow 还是会跳过查询并像这样提取它们: https ://www.google.se
3 回答
如果使用 GET 请求访问该链接,那么是的,Web 浏览器应该抓取它。
仍然有很多网站使用查询字符串来识别正在请求的内容,例如在博客/article.php?article_id=754 中。如果网络浏览器不遵循这些链接,那么网络上的很多内容都不会被索引。
在您的特定示例中,许多提供搜索的网站使用 /robots.txt 禁止搜索引擎结果页面。
您确实需要使用 cgi args 爬取页面,但强大的爬虫程序必须了解无关或有害的 cgi args。
使用 urchin cgi args(utm_campaign 等)进行爬网仅意味着您将看到重复的内容。
将会话 cgi arg 添加到每次提取的站点不仅具有重复的内容,而且如果您出现陈旧的 cgi arg,一些特别聪明的站点也会出错!这使它们几乎无法爬行。
一些网站有带有 cgi 参数的链接,访问起来很危险。例如,可公开编辑的数据库中的“删除”按钮。
谷歌网站管理员工具有办法告诉谷歌你的网站应该忽略哪些 cgi 参数,但这对其他搜索引擎没有帮助。我不知道有人为此问题开发 robots.txt 扩展名。
在过去的 4 年中,blekko 增加了一个可怕的 args 正则表达式,我们将其从 URL 中删除。这是一个很长的清单!
如果您指的是抓取某种网络资源索引:
答案很长,但简而言之,我的观点是:如果你有这个“页面/资源”:https ://www.google.se/?q= stackoverflow 被许多其他页面指向(即它有一个很大的-link degree)然后不将其集成到您的索引中可能意味着您错过了 webgraph 中一个非常重要的节点。另一方面,想象一下网络上有多少 google.com/q="query" 这种类型的链接。可能是一个巨大的数字,所以这对于您的爬虫/索引器系统来说肯定是一个巨大的开销。