Ruby登录使用mechanize进行spotify
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby登录使用mechanize进行spotify相关的知识,希望对你有一定的参考价值。
我正在创建一个需要spotify登录的脚本,我有这个代码:
require 'mechanize'
mechanize = Mechanize.new
page = mechanize.get('https://accounts.spotify.com/en/login')
form = page.forms.first
form['username'] = 'username'
form['password'] = 'password'
page = form.submit
这段代码给我留下了这个错误:
:in `<top (required)>': undefined method `[]=' for nil:NilClass (NoMethodError)
但是,如果我在Facebook上尝试相同的代码(当然要查找名称),或者我尝试过的任何其他网站,我都没有错误。这可能与spotifys形式没有post方法有关吗?我不太熟悉这种东西,并且将不胜感激!
查看页面正文(page.body
),你会看到它是空的。
这是因为该页面的主体(包括表单)是通过javascript(Angular)呈现的。
由于Mechanize无法处理javascript,您需要另一种解决方案。退房:How do I use Mechanize to process JavaScript?
你试图在一个不理解该方法的对象上调用[]=
方法,特别是,你试图在对象nil
上调用它,这是一个代表缺少某些东西的对象。
您可以在两个地方调用[]=
方法,在第9行和第10行,两次都在同一个对象上,即在变量form
引用的对象上。所以,你的问题是form
由于某种原因是nil
。
form
来自哪里?它在第7行分配给在first
对象的forms
访问器上调用page
方法的结果。 Ergo,由于某种原因,first
返回nil
。
并且很容易理解为什么:您链接到的页面没有表单,因此它显然也没有第一个表单。
你会得到错误,因为你希望有一个没有任何形式的表格。
以上是关于Ruby登录使用mechanize进行spotify的主要内容,如果未能解决你的问题,请参考以下文章
ruby 使用CLI的Magento DB修复工具 - Ruby + Mechanize