【问题标题】:Sending cookies in request with crawler4j?使用 crawler4j 在请求中发送 cookie?
【发布时间】:2011-12-16 15:45:29
【问题描述】:

我需要获取一些链接,这些链接取决于 GET 请求中发送的 cookie。 因此,当我想使用 crawler4j 抓取页面时,我需要发送一些 cookie 以获取正确的页面。

这可能吗(我在网上搜索过,但没有找到有用的东西)?或者有没有 Java 爬虫可以做到这一点?

任何帮助表示赞赏。

【问题讨论】:

    标签: java cookies web-crawler


    【解决方案1】:

    似乎 crawler4j 可能不支持 cookie:http://www.webuseragents.com/ua/427106/crawler4j-http-code-google-com-p-crawler4j-

    有几种选择:

    • 努奇
    • Heritrix
    • WebSPHINX
    • JSpider
    • WebEater
    • WebLech
    • 蛛形纲动物
    • 乔博
    • 网络收获
    • 前爬虫
    • 比克索

    我会说 Nutch 和 Heritrix 是最好的,我会特别强调 Nutch,因为它可能是仅有的旨在实现良好扩展并实际执行大爬的爬虫之一。

    【讨论】:

    • 谢谢。我去看看。
    【解决方案2】:

    迟到了这个线程,但实际上 crawler4j 在处理 cookie 方面做得很好。您甚至可以检查 cookie 值,因为您可以获得底层 HTTP 客户端 (apache)。例如:

    @Override
    public void visit(Page page) {
        super.visit(page);
    
        DefaultHttpClient httpClient = (DefaultHttpClient) getMyController().getPageFetcher().getHttpClient();
        for (Cookie cookie : httpClient.getCookieStore().getCookies()) {
            if ( cookie.getName().equals("somename") ) {
                String value = cookie.getValue();
            }
        }
    }
    

    我简要了解了 Nutch,但 crawler4j 似乎更易于集成(使用 maven 依赖项 5 分钟)并且非常适合我的需求(我正在测试会话 cookie 在我的网站上跨大量请求维护)。

    【讨论】:

    • 我有些疑惑! 1) 你能解释一下这部分 if ( cookie.getName().equals("somename") ) { String value = cookie.getValue(); } 我应该在哪里插入我的 cookie?
    猜你喜欢
    • 2020-01-24
    • 2014-12-18
    • 2011-02-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2013-06-08
    相关资源
    最近更新 更多