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

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,然后获得对应的返回的内容,从中提取你要的数据的。

 

总结

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

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

 

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

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


发布了2 篇原创文章 · 获赞 0 · 访问量 1万+
展开阅读全文

请问HTML页面中如何动态获取数据

08-18

``` <form id="userinfofrm" action="${base}/member/index/douserinfo.htm" method="post" novalidate="novalidate"> <div class="personal-data"> <h3 class="gr-tit">个人资料</h3> <dl> <dt>头  像:</dt> <dd> <div class="head-pic"><img id="face" src="{$info['litpic']}" /><span class="upload">编辑头像</span></div> <input type="hidden" name="litpic" id="litpic" value="{$info['litpic']}"> </dd> </dl> <dl> <dt>昵  称:</dt> <dd> <input type="text" class="msg-text" id="nickname" name="nickname" value="{$info['nickname']}" /><span class="star-ico">*</span> </dd> </dl> <dl> <dt>性  别:</dt> <dd> <span class="sex"><a {if $info['sex']=='男'}class="on"{/if} href="javascript:;">男</a><a href="javascript:;" {if $info['sex']=='女'}class="on"{/if}>女</a></span> <input type="hidden" name="sex" id="sex" value="{$info['sex']}"> </dd> </dl> <dl> <dt>手机号:</dt> <dd> {if !empty($info['mobile'])} <span class="phone-num">{$info['mobile']}</span> <a class="revise" href="{$cmsurl}member/index/modify_phone?change=1">更换手机></a> {else} <a class="revise" href="{$cmsurl}member/index/modify_phone?change=1">绑定手机></a> {/if} </dd> </dl> <dl> <dt>E-mail:</dt> <dd> {if !empty($info['email'])} <span class="mail">{$info['email']}</span> <a class="revise" href="{$cmsurl}member/index/modify_email?change=1">更换邮箱></a> {else} <a class="revise" href="{$cmsurl}member/index/modify_email?change=1">绑定邮箱></a> {/if} </dd> </dl> <hr /> <dl> <dt>真实姓名:</dt> <dd><input type="text" name="truename" id="truename" class="msg-text" value="{$info['truename']}" /><span class="star-ico">*</span></dd> </dl> <dl> <dt>身份证号:</dt> <dd><input type="text" name="cardid" id="cardid" class="msg-text" value="{$info['cardid']}" /></dd> </dl> <dl> <dt>常住地址:</dt> <dd><input type="text" class="msg-text" name="address" id="address" value="{$info['address']}" /></dd> </dl> <div class="save-revise"> <a href="javascript:;" class="saveinfo">保存修改</a> </div> <div class="success-out-box" style=" display:none"> <div class="box-con"> <h3><img src="{$GLOBALS['cfg_public_url']}images/success-ico.png" />个人资料修改成功!</h3> <a href="javascript:;" class="close_success">确 定</a> </div> </div><!--修改成功弹出框--> <input name="backurl" type="hidden" value="${backurl!}" /> </div> </form> ``` 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览