免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2882 | 回复: 3
打印 上一主题 下一主题

获取dict.cn时网页得到的结果有些问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-24 20:47 |只看该作者 |倒序浏览
本帖最后由 heixia108 于 2010-05-25 00:07 编辑

想写个程序获取dict.cn上对单词的解释
  1. #!/usr/bin/perl
  2. use strict;
  3. use LWP::UserAgent;
  4. use HTML::TreeBuilder;

  5. my $url = "http://dict.cn/mini.php?q=hello";
  6. my $ua = LWP::UserAgent->new;
  7. my $response = $ua->get($url);

  8. if ($response->is_success) {
  9.     print $response->decoded_content;  # or whatever
  10. }
  11. else {
  12.     die $response->status_line;
  13. }
复制代码
结果打印的是  “正在加载<hello>的翻译解释”

我用httpwath看了下,原因是向 $url发送请求后 到 得到查询结果(即"你好")之间会有一段延时,这期间它访问了 http://dict.cn/ajax/dictcontent.php 等地址,所以得到的结果出错了,有什么方法可以得到正确的结果吗?

论坛徽章:
0
2 [报告]
发表于 2010-05-24 23:36 |只看该作者
dict.cn
是用javascript 来获得数据的

通过

  1. POST http://dict.cn/ajax/dictcontent.php HTTP/1.1
  2. Cookie: h=%2Fhello%2F; dictsid=13.138669254.2784563.152565

  3. q=hello&s=2&t=1e92155c77e89768fd5b35d3e43691fb
复制代码
通过 q  s t 三个字段 post 到 http://dict.cn/ajax/dictcontent.php
返回的内容就好像是一个 json格式的数据吧
然后用javascript把这个json替换到 "正在加载.."

所以办法有这么几个

分析s t 字段 是什么...   (t应该要根据 最开始 获得的cookies的dictsid 字段算出来吧.... )

然后获得json的数据格式(解释内容都在里面了 不过还有一些html javascript代码... 他把代码当作数据返回的) 解析 json(这个比较容易了) 得到单词的解释....

-------------------------------------------------------
去google下 看有人分析了 dict.cn的格式没...


-------------------------------------------------------
换个网站搞吧.... 比如google翻译 也不错的..




由于lwp不支持javascript   应该不可能直接通过lwp简单的给地址就获得结果滴....

论坛徽章:
0
3 [报告]
发表于 2010-05-24 23:37 |只看该作者
http://dict.cn/mini.php?q=XXOO

这个地址是个 幌子.....
  最终是http://dict.cn/ajax/dictcontent.php  获得地址
然后操作DOM 替换掉 http://dict.cn/mini.php?q=XXOO 里面"正在加载"的内容

论坛徽章:
0
4 [报告]
发表于 2010-05-25 00:06 |只看该作者
谢谢,讲得很详细   ~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP