webhttprequest遇到javascript怎么办

cc_net 2010-07-23 04:03:51
我用webhttprequest去分析百度MP3页面,从页面中得到MP3的地址

首先是申请得到搜索结果的界面

歌曲名 歌手名 专辑名 试听 歌词 铃声 大小 格式 链接速度
1 后来 刘若英 我会陪你 试听 歌词 铃声 1.1 M wma
2 后来 刘若英 我会陪你 试听 歌词 铃声 5.2 M mp3

这个样子,点击最左边的歌曲名,可以进入下一个界面,也就是MP3地址的界面
http://220.181.38.82/m?word=mp3,http://www.suzkb.com/singing/userfiles/video/Y2JjbWZoZ2xiZGNnZ2ptOA$$.mp3,,[%BA%F3%C0%B4]&ct=134217728&tn=baidusg,后来 &si=%BA%F3%C0%B4;;%C1%F5%C8%F4%D3%A2;;14970;;14970&lm=16777216&sgid=2

但是用webhttprequest请求,却得不到MP3的地址,因为它里面的地址是执行js的到的,请问,我如何去得到MP3地址

用webbrowser能行吗?但是他页面源文件中,也不包含MP3地址



另外我下载MP3时,怎么获得下载速度。我么次读1024个字节,获得读取的时间,然后计算,这样算的速度很不准确


...全文
181 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
webbrowser控件调用js的格式是:
object obj = mywebbrowser.Document.InvokeScript("js函数名,注意不带括号", new object[]{"参数表"});

返回值是个javascript对象,可以使用反射调用它的方法,比如调用toString()方法:
object o = obj.GetType().InvokeMember("toString", System.Reflection.BindingFlags.InvokeMethod, null, obj, null);

也可以获取属性,比如获取id属性:
foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
{
if (pinfo.Name == "id")
{
object ob = pinfo.GetValue(obj, null);
if (ob != null)
{
string id = ob.ToString();
}
}
}
cc_net 2010-07-30
  • 打赏
  • 举报
回复
就是不清楚如何重写
a184485789 2010-07-29
  • 打赏
  • 举报
回复
二楼说得对,就相当于用C#把JS重写一下,效果是一样的
cc_net 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 supercpu123 的回复:]
找到相关JS 然后用C#模拟出来 做采集程序 这个很常见
[/Quote]

就是不知道如何模拟,没有弄过
小夏天~ 2010-07-24
  • 打赏
  • 举报
回复
帮不上忙,不好意思。。
supercpu123 2010-07-24
  • 打赏
  • 举报
回复
找到相关JS 然后用C#模拟出来 做采集程序 这个很常见

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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