目前网页通常分为有静态网页和动态网页两种。在开发页面爬虫的过程中,如果是静态网页,我们可以直接使用URLLib或者Requests等工具直接爬取采集。如果是动态页面,需要等静态部分加载完毕以后,使用Javascript异步调用后端获取数据(使用Ajax异步调用),再动态的渲染页面内容。这种情况下,使用静态页面的方式就无法真正爬取到网页内容了。那么我们在开发页面爬虫之前,如何分辨目标页面是静态页面还是动态页面呢?本文介绍一个简单的方法,教大家如何区分一个网页是动态页面还是静态页面。
市面上的浏览器几乎都支持禁用Javascript这个特性,在实际工作中可以按照自己的习惯选择不同方案。个人建议同时使用两个浏览器,一个完全禁用JS,一个作为日常使用。这样就不用频繁开关JS配置了。本文介绍两种浏览器的Javascript禁用步骤。
使用Firefox判断页面是否使用了Javascript或Ajax技术
在Firefox中禁用JS相对简单,通过以下几步便可以完成:
- 在地址栏输入“about:config”,在显示的界面中点击“接受相关风险并继续”或者“Accept the Risk and Continue”
- 在搜索框中输入Javascript
- 双击Javascript.enabled行,进行启用/禁用
使用Chrome判断页面是否使用了Javascript或Ajax技术
我们通过在Chrome中设置禁用javascript后查看网页内容,观察禁用JS前后页面内容差异来判断页面为动态加载。以下我们以欧洲时报主页(http://www.oushinet.com/europe/
)为例,来详细描述以下这个情况。在开启JS时,页面内容如下:
接下来我们禁用JS再看看页面。首先点击窗口右上角的三条横线图标,随后点击“设置”。如图:
随后在配置窗口中的搜索框里输入“javascript”,并点击网站设置。如图:
进入网站设置可看到如下界面,“javascript”选项是开启状态,点击“javascript”。如图:
将“javascript”设置为禁止。如图:
禁用javascript后重新打开欧洲时报主页,这时发现列表页不能完全加载出来,则说明该网页是由js动态加载的页面。如图:
如何爬取动态页面内容
如果是静态页面,我们可以非常简单的使用URLLibs或者Requests获得页面内容,然后使用Beautifulsoup等工具使用xpath或者css selector匹配获得想要的字段。对于动态页面,就稍微复杂一些。可以使用Selenium或者phantomjs(已经不在维护)等工具渲染页面后获得最终的内容,然后再用xpath或者css selector匹配。对于复杂的内容,如果不方便使用xpath,可以使用正则表达式匹配。更多内容可以参考《基于xpath和正则表达式的数据提取》
扫码联系船长