【问题标题】:Which of phantomjs or webdriver would be easier/more-appropriate for scraping my linkedin account?phantomjs 或 webdriver 哪个更容易/更适合抓取我的linkedin 帐户?
【发布时间】:2013-12-20 08:16:52
【问题描述】:

我个人需要抓取/自动访问我的linkedin 帐户(复制我的联系人等),显然该网站太 ajaxy 无法仅使用 wget、urllib 等。

不能使用 LinkedIn API,因为它恰好限制了我感兴趣的一些用例。

我精通 Python 和 Javascript。我过去曾在小型抓取项目中使用过 webdriver,但在很久以前,重新学习它与学习 phantomjs 可能存在类似的开销。

我不打算运行任何类型的大容量基于集群的抓取操作,这一切都将在我的本地机器上以适当的速率限制运行,以免惹恼linkedin。这主要是为了个人方便、自动化等。

我听说过有关 phantomjs 的好消息,但我想了解它与 webdriver 相比有什么优势(反之亦然)。我猜 phantomjs 是“无头的”,这意味着它实际上不必运行浏览器,我想这可以更轻松地编写命令行脚本或消耗更少的资源或其他一些我想向我解释的属性!

我可以理解网络抓取程序应该是 javascript 的论点,因为这更像是一种浏览器原生语言,但我很想知道这是否是人们使用 phantomjs(或其表亲之一)的主要原因

【问题讨论】:

  • 只是让你知道,我正在使用无头硒..

标签: selenium webdriver web-scraping phantomjs


【解决方案1】:

我在抓取工作中使用过 Selenium 和 Phantom/Casper,在功能测试工作中也都使用过。如果我要按照你的描述去做,我会选择 CasperJS。我会选择 CasperJS 而不是 PhantomJS,因为:

  • 更容易描述步骤流程。 (直接使用 PhantomJS 时必须处理所有异步回调。)
  • 可以将 SlimerJS 换成使用 Gecko(即 Firefox),无需额外的努力。 (我认为这与 LinkedIn 无关,但 PhantomJS 1.9.x 是基于相当老的 WebKit,所以当网站使用较新的 HTML5 功能时,它有时会失败。)

选择 CasperJS 而不是 Selenium 的原因:

  • CasperJS 中的步骤流很容易描述。
  • Selenium 感觉更像是努力工作。这可能是因为 PHP 是我首选的胶水语言,而自 Selenium 2.0 以来,PHP 一直被视为局外人。但它也具有只允许用户可以在浏览器中使用键盘和鼠标执行的操作的理念。这有时不够灵活。
  • 每次 Firefox 更新时 Selenium 都会中断,我必须安装最新版本。恼人的。 (PhantomJS 和 SlimerJS 内部有自己的浏览器,因此完全独立于桌面浏览器的系统更新。)

由于您精通 Python 和 JavaScript,我想说以上都不是致命的原因。选择哪一个并不重要,工作量大致相同。

【讨论】:

  • 感谢 Darren 的出色回答,以及解释 CasperJS 的价值(也向我推荐了它,但我不明白它提供了什么)
猜你喜欢
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
相关资源
最近更新 更多