【问题标题】:Crawler4j warning "invalid cookie header" is causing the crawler not to fetch that pageCrawler4j 警告“无效的 cookie 标头”导致爬虫无法获取该页面
【发布时间】:2016-02-11 11:19:15
【问题描述】:

我在非常业余的设置中使用 crawler4j 来从网站上抓取文章(以及用于内容抓取的样板)。在某些站点中,爬虫工作得非常整齐。但在其他情况下,它只是无法获取网站(尽管我仍然可以使用 jsoup 获取数据)。

碰巧从同一个站点获取了一些页面,而其他页面则没有。它发出此警告,然后完全跳过该页面:

Feb 11, 2016 5:05:31 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies
WARNING: Invalid cookie header: "Set-Cookie: visid_incap_688991=7KCcJ/TxTWSEzP9k6OFX2eZqvFYAAAAAQUIPAAAAAAAHVw5Tx4mHCf3VQHK63tAN; expires=Fri, 09 Feb 2018 15:00:14 GMT; path=/; Domain=.banglatribune.com". Invalid 'expires' attribute: Fri, 09 Feb 2018 15:00:14 GMT

我可以从这个警告中了解到 crawler4j 正在对 cookie 做一些事情(它使用的是 CookieSpecs.DEFAULT,我无法以任何方式更改它)。

有没有其他方法可以在不使用 crawler4j 的情况下管理 httpclient?

有没有办法改变 crawler4j 中的 cookie 选项?

crawler4j 中的 PageFetcher.java 创建 httpclient 并处理所有 cookie 选项。

或者我应该使用另一个可以为在其 cookie 中使用错误格式的网站定制的爬虫?

任何帮助将不胜感激。

【问题讨论】:

  • 我自己也在为身份验证/cookies 和 crawler4j 苦苦挣扎……据我所知,它并不是为了自己管理 http 客户端而设计的。您可以克隆 repo 并重新编写 PageFetcher 以便这样做,并向 crawler4j 的开发团队建议更改。不幸的是,我也不知道任何(对我而言)有用的替代方案。也许它们对您来说是有用的替代品:nutch 或 scrapy (python)。如果您发现其他人,请发表评论
  • 我目前正在使用 webmagic 爬虫,它没有一些基本的配置(比如爬取的深度、要爬取的最大页面数),但是很容易按照它的设计放入您想要的功能很不错。
  • 只是关于 webmagic 的提示,完整的用户指南是用中文写的。不过,您始终可以使用谷歌翻译,对我来说这足以理解基本概念。
  • 我检查了它,设计非常好,同意。我扩展它以使用身份验证,但这仍然不起作用,但尽管如此,它是一个非常好的项目。感谢您的提示。

标签: java cookies web-crawler crawler4j


【解决方案1】:

HTTPClient 是从 crawler4j 源内部处理的,因此无法更改或操作有关 httpclient 的任何配置(其中包括 cookie 规范)在使用这个库时。

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2017-08-29
    相关资源
    最近更新 更多