关于获取解析网易云音乐网页源码问题,脚本加载完后的....
网址:http://music.163.com/#/m/search?s=%E6%B7%B1%E7%88%B1&_page=search&type=10
用WebClient,WebBrower 获取的源码都是不完整的没有加载完脚本的.
试过许多第三方的库:HtmlAgilityPack,nsoup,SgmlReader,Winista.Htmlparser 都没有办法解决.
解析效果最好的属Opera的检查元素和IE的开发者工具.
但是又不懂.NET怎么去调用这些工具.
求助..................................................................
用WebClient,WebBrower 获取的源码都是不完整的没有加载完脚本的.
试过许多第三方的库:HtmlAgilityPack,nsoup,SgmlReader,Winista.Htmlparser 都没有办法解决.
解析效果最好的属Opera的检查元素和IE的开发者工具.
但是又不懂.NET怎么去调用这些工具.
求助..................................................................
在页面上看到的链接和图片 在源码里面完全看不到 都是脚本生成的
有试过用mshtml 去执行javascript,但是源码里面的javascript 都不带名字的,最后还是不成了.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
不知道你用AAUTO解析出来网页源码是怎样的,但是.NET的WebBrower解析出来的是这样的:<a class="s-fc0 f-thide xtag" href="#/m/artist?id=${artist.id}">${artist.name|mark}</a>
phtantomjs很强大,但是和.NET交互这个貌似不那么容易.比如说我做一个程序调用phtantomjs加载一个网页,加载完后怎么把网页传递给程序........
回复
outerHTML 得到的是js处理后的源码,见上面的截图( 调用document.write回写到页面上了 )。注意aauto里用了wait...() 等函数,你得到处理前的,可能是没有等待处理完成。简单的你可以加个延时试试。
回复
真的是解析出来的网页源码不一样,.NET的WebBrower有个DocumentCompleted事件,这个事件就是网页完整加载后触发的,但是即使是这样出来的源码还是<a class="s-fc0 f-thide xtag" href="#/m/artist?id=${artist.id}">${artist.name|mark}</a>
回复
DocumentCompleted 事件并不是指JS执行完成了,打个比方用JS写个定时器,DocumentCompleted怎么可能知道?!其实很简单判断下所有节点的状态,简单的写个循环没解析完就延时吧。AAU只不过是自动做了这些工作。
回复
谢谢你,我再试试看
WebBrower 肯定是可以的,不过要处理下框架跨域,另外应当用DOM属性才能获取JS执行后的源码。
上面是运行效果,下面是 AAuto源码(调用 WebBrower , .Net同理 ):
selenium rc 这个库 用.net编译出来的可执行文件 放到其他电脑上面 学要安装selenium rc吗?
回复
不太清楚,我本身是做OC这块的,selenium我是用的python做的。
回复
谢谢!
我以前做过类似的功能,只不过抓得时issuu的,后来发现有api可以模拟,就没有模拟浏览器了,我之前用的是selenium这个库,可以解决楼主的问题,有问题可以联系。
坐等大神!