【教程】如何抓取动态网页内容

http://www.crifan.com/how_to_crawl_dynamic_webpage_content/


背景

很多时候,很多人,需要去抓取网页中某些特定内容。

但是,除了之前介绍过的,想要提取某些,静态网页,中的特定内容,比如:

【教程】抓取网并提取网页中所需要的信息 之 Python版

【教程】抓取网并提取网页中所需要的信息 之 C#版

之外,有些人会发现,对于其所要抓取网页中的内容,网页源码中却没有。

所以,此时,就不知道如何实现了。

此处,就来解释一下,如何抓取所谓的动态网页中的特定内容。

 

前提知识

在看本文之前,你需要具备相关的基础知识:

1.抓取网页,模拟登陆等相关的逻辑

如果不熟悉,可参考:

【整理】关于抓取网页,分析网页内容,模拟登陆网站的逻辑/流程和注意事项

 

2.学会用工具,比如IE9的F12,去抓取对应的网页执行的过程

不熟悉的可参考:

【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程

 

3.对于普通的静态网页,如何提取所需的内容

对此不熟悉的,可以参考:

(1)Python版:

【教程】抓取网并提取网页中所需要的信息 之 Python版

(2)C#版:

【教程】抓取网并提取网页中所需要的信息 之 C#版

 

什么是动态网页

此处所谓的动态网页,是相对于那些静态网页来说的。

而此处所说的静态网页,指的是,对于通过浏览器中查看网页源码时,看到的网页源码中的内容,和网页显示的内容,都是对应的。

换句话说,我想要获得网页上显示的某个内容时,都是可以通过查找网页源码,而找到对应的部分的。

而动态网页,与此相反,想要获得动态网页中的特定的内容,通过直接查看网页源码,是找不到的。

 

动态网页中的动态的内容是从哪里来的

所以,这里就涉及到一个问题了:

所谓的动态网页中的动态内容,到底是从哪里来的?

概括的说,就是通过其他手段生成或者获得的。

目前我所了解到的,有几种:

本地的Javascript脚本所生成的

如果你去用IE9的F12去分析你访问一个url的过程时,你就会发现,其中很可能会涉及到,

在一个网页正常完全显示之前,期间会访问到很多javascript脚本,简称js脚本或js。

这些js脚本,就是实现了很多动态交互的内容的。

其中,对于你所要抓取的一些内容,有时候,就是这些js脚本动态执行,最终计算出来的。

 

通过访问另外一个url地址获得的

很多时候,有些内容,是访问了另外一个url地址后,所返回的数据;

 

如何获得我所要抓取的动态内容

其实,对于如何抓取所需的动态内容,简单一点来说,就一种解决办法:

根据你通过工具分析出来的结果,自己找到对应的数据,去提取出来;

只不过,这个数据,有时候是直接在分析结果过程中直接能提取出来的,有时候可能是js计算出来的。

 

想要抓取数据,是由js脚本生成的

虽然最终的动态内容,有的是js脚本执行所生成的,但是对于你想要抓取的数据:

  • 如果所要抓取内容和js执行逻辑有关系:那就得靠自己去分析,调试js执行的过程,最终找到是如何一点点计算出来最终你需要的值的;
  • 如果所要抓取内容和js执行没关系:即,虽然你想要抓取的内容,是js执行生成的,但是最终还是可以在别的某个js文件或者其他返回的html代码中可以直接获得,那么你自然可以不用关系数据是如何来的,而直接去提取即可,即从特定的字符串中,提取你要的对应的内容。

 

想要抓取数据是访问另一个url所得到的

如果对应的你所要抓取的内容,是需要访问另外一个url地址,所返回的数据,那么很简单,你还需要另外去访问此url,然后获得对应的返回的内容,从中提取你要的数据的。

 

总结

还是那句话,不论你访问的内容,是哪种方式生成的,最终,都还是可以通过工具,去分析出来对应的内容,是如何从无到有生成的。

然后用代码模拟出来此过程,最终提取出你所需要的内容而已;

 

而关于具体的实例演示,参见:

【教程】以抓取网易博客帖子中的最近读者信息为例,手把手教你如何抓取动态网页中的内容


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值