对编码相当陌生,我想要一个项目来工作,可以帮助我提高我的技能。我不确定哪种语言最适合这种工作,但我肯定更喜欢使用c++或c#。
对于程序的第一部分,我基本上想尝试把我所有的潘多拉喜欢并把它们放在一个电子表格中,歌曲名称是一列,艺术家在另一列。一旦我真正得到了我需要的数据,我不认为格式化太难,但是我真的不确定在这个时间点上如何与服务器通信。我猜我可能无法抓取喜欢的原始列表,所以我认为我最好的做法是首先扩展喜欢列表,然后我需要在源代码中阅读屏幕上的文本。
第一步,展开my like,我找到了实际这样做的HTML源代码:
<div class="show_more tracklike" data-nextLikeStartIndex="0" data-nextThumbStartIndex="5">Show more</div>"
不确定这是否是我可以工作的东西,但我在想,如果我可以设置data-nextThumbStartIndex="5"等于#喜欢- 5(默认情况下显示的数量),这将是相当容易扩展列表。如果没有,我可能不得不反复点击"显示更多"链接,直到我在页面上有所有的喜欢。
对于下一步,得到我想要的数据,我认为我最好的选择是基本上只是抓取我在屏幕上看到的文本,然后担心过滤和操纵数据。另一种选择是查看源代码,我实际上发现了我想要存储的信息的代码块。如果我能检索页面的源代码,我认为这将是相对容易挑选出我实际上想要的数据。
所以,是的,这就是它,我知道我很新手,我说的可能是错误的和/或比我想象的要复杂得多,但我是一个非常快速的学习者,至少如果有人能指出我在正确的方向与服务器通信,那将是非常感激的。
这个问题相当"宽泛"(我对潘多拉本身完全不了解-从我住的地方无法访问它)。
一般来说,有几种不同的方法来解决这类问题:
-
屏幕抓取-基本上访问网站,如果你是一个网络服务器,并从返回的HTML字符串,挖掘出你需要的信息。这里的问题是数据不太适合"机器阅读",因为它往往没有明显的点供"读者"找到相关信息,并且很难从"糠"中对数据进行排序。
-
AJAX api -"异步Java脚本和XML",其中网站的提供者有一个接口来获取某些数据到web浏览器-当然,如果你"假装"是web浏览器,请求相同类型的信息。您依赖于网站拥有这样的接口,但是如果它存在,数据通常是"更适合机器读取的形式"(通常是XML,但并非总是如此)。
-
JSON api -"Java Script Object Notation"是一个类似于AJAX的解决方案-像XML一样,JSON是一种"人类和机器可读的格式"。
后两种绝对是可取的,因为返回的数据是用于机器读取的。缺点是需要"服务器端合作"。好在Pandora确实有一个JSON API。不好的是它似乎很难使用……这里有一个关于这个话题的讨论:对非官方潘多拉API进行JSON调用
这里的主要原则是你发送一些东西到web服务器,并收到一个带有请求信息的回复。具体如何做到这一点取决于语言/编程环境。libcurl是一个流行的c++解决方案。
这里有一个Ruby客户端,使用JSON接口https://github.com/nixme/pandora_client 下面是一个与Pandora交互的c#实现:http://pandoraunleashed.googlecode.com/svn/trunk/PandoraUnleashed/Pandora.cs遗憾的是,我找不到任何关于"listing likes"的直接参考。