如何判断动态页面和静态页面

目前网页通常分为有静态网页和动态网页两种。在开发页面爬虫的过程中,如果是静态网页,我们可以直接使用URLLib或者Requests等工具直接爬取采集。如果是动态页面,需要等静态部分加载完毕以后,使用Javascript异步调用后端获取数据(使用Ajax异步调用),再动态的渲染页面内容。这种情况下,使用静态页面的方式就无法真正爬取到网页内容了。那么我们在开发页面爬虫之前,如何分辨目标页面是静态页面还是动态页面呢?本文介绍一个简单的方法,教大家如何区分一个网页是动态页面还是静态页面。

市面上的浏览器几乎都支持禁用Javascript这个特性,在实际工作中可以按照自己的习惯选择不同方案。个人建议同时使用两个浏览器,一个完全禁用JS,一个作为日常使用。这样就不用频繁开关JS配置了。本文介绍两种浏览器的Javascript禁用步骤。

使用Firefox判断页面是否使用了Javascript或Ajax技术

在Firefox中禁用JS相对简单,通过以下几步便可以完成:

  • 在地址栏输入“about:config”,在显示的界面中点击“接受相关风险并继续”或者“Accept the Risk and Continue”
  • 在搜索框中输入Javascript
  • 双击Javascript.enabled行,进行启用/禁用

about config
firefox disable js

使用Chrome判断页面是否使用了Javascript或Ajax技术

我们通过在Chrome中设置禁用javascript后查看网页内容,观察禁用JS前后页面内容差异来判断页面为动态加载。以下我们以欧洲时报主页(http://www.oushinet.com/europe/)为例,来详细描述以下这个情况。在开启JS时,页面内容如下:
enable js example

接下来我们禁用JS再看看页面。首先点击窗口右上角的三条横线图标,随后点击“设置”。如图:
disable js option 1

随后在配置窗口中的搜索框里输入“javascript”,并点击网站设置。如图:
disable js option 2

进入网站设置可看到如下界面,“javascript”选项是开启状态,点击“javascript”。如图:
js option in chrome

将“javascript”设置为禁止。如图:
disable javascript in chrome

禁用javascript后重新打开欧洲时报主页,这时发现列表页不能完全加载出来,则说明该网页是由js动态加载的页面。如图:
page without js

如何爬取动态页面内容

如果是静态页面,我们可以非常简单的使用URLLibs或者Requests获得页面内容,然后使用Beautifulsoup等工具使用xpath或者css selector匹配获得想要的字段。对于动态页面,就稍微复杂一些。可以使用Selenium或者phantomjs(已经不在维护)等工具渲染页面后获得最终的内容,然后再用xpath或者css selector匹配。对于复杂的内容,如果不方便使用xpath,可以使用正则表达式匹配。更多内容可以参考《基于xpath和正则表达式的数据提取

Captain QR Code

扫码联系船长

发表回复

您的电子邮箱地址不会被公开。