背景
很多时候,很多人,需要去抓取网页中某些特定内容。
但是,除了之前介绍过的,想要提取某些,静态网页,中的特定内容,比如:
和
之外,有些人会发现,对于其所要抓取网页中的内容,网页源码中却没有。
所以,此时,就不知道如何实现了。
此处,就来解释一下,如何抓取所谓的动态网页中的特定内容。
前提知识
在看本文之前,你需要具备相关的基础知识:
1.抓取网页,模拟登陆等相关的逻辑
如果不熟悉,可参考:
【整理】关于抓取网页,分析网页内容,模拟登陆网站的逻辑/流程和注意事项
2.学会用工具,比如IE9的F12,去抓取对应的网页执行的过程
不熟悉的可参考:
【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程
3.对于普通的静态网页,如何提取所需的内容
对此不熟悉的,可以参考:
(1)Python版:
(2)C#版:
什么是动态网页
此处所谓的动态网页,是相对于那些静态网页来说的。
而此处所说的静态网页,指的是,对于通过浏览器中查看网页源码时,看到的网页源码中的内容,和网页显示的内容,都是对应的。
换句话说,我想要获得网页上显示的某个内容时,都是可以通过查找网页源码,而找到对应的部分的。
而动态网页,与此相反,想要获得动态网页中的特定的内容,通过直接查看网页源码,是找不到的。
动态网页中的动态的内容是从哪里来的
所以,这里就涉及到一个问题了:
所谓的动态网页中的动态内容,到底是从哪里来的?
概括的说,就是通过其他手段生成或者获得的。
目前我所了解到的,有几种:
本地的Javascript脚本所生成的
如果你去用IE9的F12去分析你访问一个url的过程时,你就会发现,其中很可能会涉及到,
在一个网页正常完全显示之前,期间会访问到很多javascript脚本,简称js脚本或js。
这些js脚本,就是实现了很多动态交互的内容的。
其中,对于你所要抓取的一些内容,有时候,就是这些js脚本动态执行,最终计算出来的。
通过访问另外一个url地址获得的
很多时候,有些内容,是访问了另外一个url地址后,所返回的数据;
如何获得我所要抓取的动态内容
其实,对于如何抓取所需的动态内容,简单一点来说,就一种解决办法:
根据你通过工具分析出来的结果,自己找到对应的数据,去提取出来;
只不过,这个数据,有时候是直接在分析结果过程中直接能提取出来的,有时候可能是js计算出来的。
想要抓取数据,是由js脚本生成的
虽然最终的动态内容,有的是js脚本执行所生成的,但是对于你想要抓取的数据:
- 如果所要抓取内容和js执行逻辑有关系:那就得靠自己去分析,调试js执行的过程,最终找到是如何一点点计算出来最终你需要的值的;
- 如果所要抓取内容和js执行没关系:即,虽然你想要抓取的内容,是js执行生成的,但是最终还是可以在别的某个js文件或者其他返回的html代码中可以直接获得,那么你自然可以不用关系数据是如何来的,而直接去提取即可,即从特定的字符串中,提取你要的对应的内容。
想要抓取数据是访问另一个url所得到的
如果对应的你所要抓取的内容,是需要访问另外一个url地址,所返回的数据,那么很简单,你还需要另外去访问此url,然后获得对应的返回的内容,从中提取你要的数据的。
总结
还是那句话,不论你访问的内容,是哪种方式生成的,最终,都还是可以通过工具,去分析出来对应的内容,是如何从无到有生成的。
然后用代码模拟出来此过程,最终提取出你所需要的内容而已;
而关于具体的实例演示,参见:
【教程】以抓取网易博客帖子中的最近读者信息为例,手把手教你如何抓取动态网页中的内容
转载请注明:在路上 » 【教程】如何抓取动态网页内容