【问题标题】:How to handle web crawlers in Django?如何在 Django 中处理网络爬虫?
【发布时间】:2011-05-25 07:33:33
【问题描述】:

由于网络爬虫在没有任何请求数据的情况下访问了我网站的某些部分,我收到了很多发送到我的电子邮件的错误,我想知道在 Django 中处理网络爬虫的最佳方法是什么?当我遇到空的 QueryDict 时是否应该发出重定向?

【问题讨论】:

    标签: django search-engine


    【解决方案1】:

    您可以考虑实施robots.txt 以禁止抓取工具访问您网站中仅供人类使用的区域,例如表单。

    【讨论】:

      【解决方案2】:

      我认为您的视图应该适用于任何请求,在列表返回页面上显示“不正确的请求”消息。 500太丑了您确定用户不会在没有任何请求数据的情况下打开页面吗? QueryDict 的“get”方法可以帮助获取默认值。

      【讨论】:

        【解决方案3】:

        表现良好的爬虫应该只做 GET 请求。表单不应该是 GET 请求。

        Ruby 和 Rails 使用 CRUD 映射

        Create -> POST,
        READ -> GET, 
        Update -> PUT, 
        Delete -> DELETE
        

        只有没有附加信息的东西才应该是 GET 请求。

        【讨论】:

        • "表单应该是 GET 请求以外的任何东西" -> <form method="get"...>
        • 应该劝阻。看看 Twitter 的主页,看看有没有 GET 表单。
        • 我的爬虫总是使用DELETE... /s
        • 那是残酷和不寻常的。 :)
        • 您为什么选择 Twitter 作为模型?为什么不以 Google 为例( 使用 GET 表单)?无论如何,像这样的个别例子并不能证明它们是一种不好的做法。选择使用 GET 或 POST 应该由 RFC2616 定义的方法语义决定:w3.org/Protocols/rfc2616/rfc2616-sec9.html。在这种情况下,GET 表单是完全有效的。
        猜你喜欢
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多