如何获得百度知道里面的“浏览次数”

liuxiaobing2008 2012-09-05 10:30:05
如何获得百度知道里面的“浏览次数”?

如果有人解决,另外开贴继续给分
...全文
263 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
多谢ldh911
不好意思,我是写C++的,所以对javascript不懂
[/Quote]

哦,这个不是JavaScript,是Java代码,可以直接执行的。

如果是C++,那么你需要处理下HTTP请求,应该有包可以用的吧?

就是说,你要模拟浏览器用TCP去连接百度服务器,然后发出一个 HTTP 请求,最后就能得到服务器端的响应了。

你可以这么实验下,在命令行(cmd)下输入:
telnet cp.zhidao.baidu.com 80
然后会一片黑屏,接着把这几句复制进去:
GET /v.php?q=326691037 HTTP/1.1
Accept: */*
Host: cp.zhidao.baidu.com
按两次回车,就看到服务器的答复了。
liuxiaobing2008 2012-09-05
  • 打赏
  • 举报
回复
多谢ldh911
不好意思,我是写C++的,所以对javascript不懂
MiceRice 2012-09-05
  • 打赏
  • 举报
回复
对了,后面那个callback可以不要,也就是精简为:
http://cp.zhidao.baidu.com/v.php?q=问题ID
返回的内容也很干净,就是文本:14915

顺手把HTTP信息赋值给你:
HTTP/1.1 200 OK
Content-type: text/html
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 05 Sep 2012 02:52:29 GMT
Server: BWS/1.0


简易函数供参考:

public static int getBDZDVisitedNumber(String questionId) {
try {
URL url = new URL("http://cp.zhidao.baidu.com/v.php?q=" + questionId);
Scanner sc = new Scanner(url.openConnection().getInputStream());
if (sc.hasNextInt()) {
return sc.nextInt();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return -1; // Failed to get the visited number.
}

调用:
System.out.println("VisitedNumber:" + getBDZDVisitedNumber("326691037"));
Tommyzcg 2012-09-05
  • 打赏
  • 举报
回复
能否说一下解决思路啊
MiceRice 2012-09-05
  • 打赏
  • 举报
回复
这个问题不太复杂啊。。。

你试试看:
http://cp.zhidao.baidu.com/v.php?q=326691037&callback=ik.qb.visitedTimes
注意下这个值:
ik.qb.visitedTimes(xxxooo)

然后再看看这个页面:
http://zhidao.baidu.com/question/326691037.html
看看浏览的值是否一样?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧