所以这是一个非常直截了当的问题,我只是想知道,有没有人知道我将如何做到这一点,最好使用纯Java /至少可以从Java程序执行的代码?
目前我正在使用以下方法从服务器下载网页:
URL url = new URL(u);
URLConnection uc = url.openConnection();
uc.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
InputStream inputStream = uc.getInputStream();
FileOutputStream outputStream = new FileOutputStream("currentImagePage.html");
int bytesRead = -1;
int BUFFER_SIZE = 4096;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
返回的HTML文档可以在这里看到: http://pastebin.com/262h22PQ
如果你看第110行,那是我唯一感兴趣的真实事物:
<script type="text/javascript">
window._strings = {
//other random crap
"%(count)s people liked this photo": "%(count)s people liked this photo",
但是无论如何我能够访问count变量吗?如果有,我会感激任何能指出我在正确轨道上的人
我实际上有一个正在运行的方法,但是这涉及使用selenium的webdriver加载网页然后调用.getPageSource()方法。然后,这将返回以下页面源:
正如Instagram上所说“[用户x],[用户y],[用户z]和[其他人的数量]喜欢这个”,然后你可以从字符串中提取它并得到以下行:
<span data-reactid=".0.0.1.0.0.0.0.0.0.1.0.0.0:1.$tx7:0" class="llRemainingCount">3,511</span>
这个方法存在一个问题,但是为了提取喜欢的数量而必须加载潜在的数千个图像页面非常慢。
所以我猜我真正要问的是1)我能得到第一种方法来返回与方法2或2相同的页面源吗?无论如何我可以访问方法1中的%(count)变量吗?或者,如果有人有更好的解决方案,我将非常感激:)
干杯!
答案 0 :(得分:1)
你走的很复杂。
大多数大型网站都为您提供了一个可以从Java调用的非常好的API。 有些甚至是专门用于这些API的交付库
Instagram API:http://instagram.com/developer/
Instagram并不提供Java库。但Java确实为RESTful Web服务提供了一个名为JAX-RS的API。我不是这方面的专家,但通过谷歌搜索,你可能会发现更多
编辑:添加了更多有关检索&#34;喜欢&#34;
的身份验证需求的信息摘自http://instagram.com/developer/authentication/
您需要进行身份验证吗?
在大多数情况下,Instagram的API只需要使用client_id。 client_id只是将您的服务器,脚本或程序与特定应用程序相关联。但是,某些请求需要身份验证 - 特别是代表用户发出的请求。
TL; DR你不必在公共媒体上对访问喜欢的内容进行身份验证... 它在网站上没有很好的记录...... 我刚刚在console进行了测试,看看我得到了什么。
On&#34; users / self / media / likes&#34;我有:
"error_message": "Missing access_token URL parameter."
但是&#34; media / {mediaid} /喜欢&#34;我懂了:
"error_message": "Missing client_id or access_token URL parameter."
一些阅读和摆弄总能解决问题:P