【问题标题】:What's the best way to drive a browser headlessly on heroku for my purposes? [closed]为了我的目的,在heroku上无头驱动浏览器的最佳方法是什么? [关闭]
【发布时间】:2015-10-26 17:13:16
【问题描述】:

完全改写:

我的愿景:将电子邮件、学生 ID、密码和所需课程作为 heroku 脚本参数的 Web 界面。然后,一旦一个位置打开,使用 heroku 上的网络驱动程序注册它们(使用大学生门户网站),然后通过电子邮件将结果发送给他们(成功:您进入,失败:位置不再打开,将继续尝试)。

事情是这样的:我在本地计算机上制作了这个,它就像一个魅力。我使用了 selenium 和 chromedriver,度过了一段美好的时光。

但是:我怎样才能在 heroku 上获得这个?我的选择似乎是:selenium with ghostdriver、casperjs、phantomjs、Requests(HTTP for HUmans)。屏幕截图非常适合调试,但绝对必要。

“根据什么标准最佳”:可扩展性、轻量级、易于快速构建(从 10 月 27 日(今天)开始注册两周)

【问题讨论】:

  • “最佳” 依据什么标准?您尝试过什么,有什么问题?
  • 您是否有理由需要使用浏览器而不是请求或类似库来访问网络资源(例如,它使用 flash 或 javascript 来呈现页面?)
  • 请求当然可以处理这个问题,尽管根据网站的设置方式可能会有一些技巧。 (具体来说,我使用 requests 来处理身份验证;在这种情况下,以前提交的表单要求我抓取一个或多个隐藏字段并连同我需要填写的字段一起发送)。话虽如此,jonsharpe(一如既往)有一些有效的建议,可以让这个问题成为一个更好的问题,而不是基于意见,并且有足够的证明你已经尝试过让人们提供帮助。

标签: python selenium heroku casperjs


【解决方案1】:

如果您需要在应用程序中使用 Javascript,或者只是发现编写浏览器脚本比使用 requestsurllib2 更容易,那么无头浏览器是一个不错的选择。我个人推荐phantomjs,因为它在 node、js 或 python 中很容易使用。

您需要一个自定义的 buildpack,它很容易安装,here's a good one。请注意,这需要 cedar 堆栈。

这是bit of info on adding a buildpack

这是来自 buildpack 存储库的 README 的示例设置代码:

$ heroku create --stack cedar-14 --buildpack https://github.com/ddollar/heroku-buildpack-multi
$ echo "https://github.com/ddollar/heroku-buildpack-apt" >> .buildpacks
$ echo "https://github.com/srbartlett/heroku-buildpack-phantomjs-2.0.git" >> .buildpacks
$ cat <<EOT >> Aptfile
libicu52
libjpeg8
libfontconfig
libwebp5
EOT

$ git push heroku master

希望有帮助!

【讨论】:

  • 那么现在,我可以毫无问题地使用 webdriver.PhantomJS() 还是必须将 phantomjs bin 放在 /app 中的某个位置?
  • 更新:我在 Heroku 上成功使用了 PhantomJS 和自定义构建包。零问题。什么时候活着。谢谢大家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 2018-02-05
  • 2011-06-16
  • 2012-04-22
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多