最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

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

Crawl_EmulateLogin crifan 9618浏览 0评论

背景

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

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

【教程】抓取网并提取网页中所需要的信息 之 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,然后获得对应的返回的内容,从中提取你要的数据的。

 

总结

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

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

 

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

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

转载请注明:在路上 » 【教程】如何抓取动态网页内容

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. http://doc.shenjianshou.cn/developmentSkills/useAJAX.html 终极解决方案
    abby8年前 (2016-05-23)回复
  2. 推荐一个爬虫开发的入门教程,绝对干货!http://blog.csdn.net/youmumzcs/article/details/51373830
    kettty8年前 (2016-05-21)回复
  3. 我最近一直在看你写的python模拟登陆的文章。问题有三: 1.模拟登陆时,登陆后cookie有的被del了,但是在你的百度登陆python里是可以显示出来的,是什么原因 2.如果要提交的一个值是由js产生出来的,在python中怎么对应的弄出来? 比如,我用分析工具分析51cto的下载中心签到送豆的那个链接,就是由一个js函数getFreeCredits中的“do=getfreecredits&t=" + Math.random()”产生的。
    four511年前 (2012-12-15)回复
    • 1.没看懂你说的啥意思。 2.还是通过工具去分析,js是如何执行的,如何计算出来的。 分析出内部的逻辑后,再自己写python代码,模拟出来。
      crifan11年前 (2012-12-15)回复
87 queries in 0.171 seconds, using 22.30MB memory