专栏首页python学习指南Python爬虫(十九)_动态HTML介绍

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爬虫(七)_urllib2:urlerror和httperror

    urllib2的异常错误处理 在我们用urlopen或opener.open方法发出一个请求时,如果urlopen或opener.open不能处理这个respo...

    用户1174963
  • Python网络_UDP编程

    本章将介绍UDP编程,更多内容请参考:Python学习指南 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP连接,UDP则是面向无连接的...

    用户1174963
  • python爬虫(五)_urllib2:Get请求和Post请求

    本篇将介绍urllib2的Get和Post方法,更多内容请参考:python学习指南 urllib2默认只支持HTTP/HTTPS的GET和POST方法 ...

    用户1174963
  • Vitalik Buterin:Casper 权益证明与分片技术最新进展

    区块链大本营
  • A trap of parameter 'size_average' in pytorch

    上面的程序很简单,设定一个loss函数,然后设定一个input和target进行loss计算,然后再backward。

    OLDPAN
  • 【诊断方法】AWR 快照(snapshot)无法获取

    AWR是ORACLE数据库重要的诊断工具,但是有时可能遇到AWR快照无法获取的问题,影响性能监测。本文介绍如何诊断和解决这类问题。

    TeacherWhat
  • 大数据的威力有多大?看35张世界级的大数据分析图!

    世界人口聚居地,红色越深人口密度越大;灰色代表无人地带。 点评:地球不堪重负…… 全球各国平均智商分布图,颜色越浅智商越高 点评:亚洲人平均智商105高居世界榜...

    CSDN技术头条
  • Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)

    配置环境,研究了一整天,踩了很多坑,在网上找了很多资料,发现基本上都没非常明确的教程,所以今天想分享一下配置tensorflow GPU版本的经验,希望能让各位...

    郭耀华
  • 快速学习-开发你的作业

    这一节想介绍如何开发你的作业,包括Java和Shell两种类型,并使用你熟悉的IDE进行调试。

    cwl_java
  • Dragos:工业控制系统安全阅读清单

    本文为国外工控安全咨询公司Dragos发布的关于工业控制系统安全能够进行网络自学习的一些清单和资源。

    时间之外沉浮事

扫码关注云+社区

领取腾讯云代金券