Python爬虫(十九)_动态HTML介绍

JavaScript

JavaScript是网络上最常用也是支持者对多的客户端脚本语言。它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏。 我们可以在网页源代码的<script>标签里看到,比如:

<script type="text/javascript" src="https://statics.huxiu.com/w/mini/static_2015/js/sea.js?v=201601150944"></script>

jQuery

jQuery是一个非常常见的库,70%最流行的网站(约200万)和约30%的其他网站(约2亿)都在使用。一个网站使用jQuery的特征,就是源代码里包含了jQuery入口,比如:

<script type="text/javascript" src="https://statics.huxiu.com/w/mini/static_2015/js/jquery-1.11.1.min.js?v=201512181512"></script>

如果你在一个网站上看到了jQuery,那么采集这个网站数据的时候要格外小心。jQuery可以动态地创建HTML内容,只有在JavaScript代码执行后才会显示。如果你使用传统的方法采集页面内容,就只能获得JavaScript代码执行之前页面的内容。

Ajax

我们与网站服务器通信的唯一方式,就是发出HTTP请求获取新页面。如果提交表单之后,或从服务器获取信息之后,网站的页面不需要重新刷新,那么你访问的网站就在用Ajax技术。 Ajax其实并不是一门语言,而是用来完成网络任务(可以认为它与网络数据采集差不多)的一系列技术。Ajax全称是Asynchronous JavaScript and XML(异步JavaScript和XML),网站不需要使用单独的页面请求就可以和网络服务器进行交互(收发信息)

DHTML

Ajax一样,动态HTML(Dynamic HTML, DHTML)也是一系列用于解决网络问题的技术集合。DHTML使用客户端语言改变页面的HTML元素(HTML, CSS,或者二者皆可改变)。比如页面上的按钮只有当用户移动鼠标之后才出现,背景色可能每次点击都会改变,或者用一个Ajax请求触发页面加载一段内容,网页是否属于DHTML,关键要看有没有用JavaScript控制HTML和CSS元素。

那么,如何搞定?

那些使用了Ajax或DHTML技术改变/加载内容的页面,可能有一些采集手段。但是用Python解决这个问题只有两种途径:

  1. 直接从JavaScript代码里采集内容(费时费力)
  2. 用Python的第三方库运行JavaScript,直接采集你在浏览器里看到的页面

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python绿色通道

Python爬虫:学习Selenium并使用Selenium模拟登录知乎

现在开始要学习使用Python进行动态爬虫了,而Selenium是来进行动态爬虫的一种工具

42740
来自专栏企鹅号快讯

前端性能优化——桌面浏览器前端优化策略

作者:ouven https://my.oschina.net/zhangstephen/blog/1601382 摘要: 前端性能优化是一个很宽泛的概念,本书...

25760
来自专栏iKcamp

微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

第二章:小程序中级实战教程之预备篇    项目结构设计 教学视频地址:https://v.qq.com/x/page/q05544lzelw.html ...

23270
来自专栏微信小程序开发

小程序开发注意点儿,新手入门基础

1、域名配置,不配置无法访问 小程序开发,要调用API,就必须把域名填写在配置里面,这点儿一定要记住,万一服务端突然上线一次,发现线上服务出问题了,很有可能就...

550110
来自专栏思考的代码世界

Python网络数据采集之采集JavaScript|第09天

21750
来自专栏Jackson0714

【网站开发】在新浪SAE上搭建一个博客

32750
来自专栏CodingBlock

Fiddler基本用法以及如何对手机抓包

一、Fiddler是什么?   ·一种Web调试工具。   ·可以记录所有客户端和服务器的http和https请求。   ·允许监视、设置断点、修改输入输出数据...

24450
来自专栏Java后端技术

网站上点击自定义按钮发起QQ聊天的解决方案

  最近由于开发需要,需要在网站上自定义一个立即交谈的按钮,现将解决方式分享给大家。

12630
来自专栏魏艾斯博客www.vpsss.net

如何使用宝塔 linux 面板上传文件、解压缩 zip 和 tar.gz

1K40
来自专栏梦里茶室

vim note

2016-1-22 vim plugin collections: (参考 https://www.youtube.com/watch?v=0QFR-_wUoA...

23270

扫码关注云+社区

领取腾讯云代金券