python网络数据采集-Ajax和动态HTML

本文介绍了如何处理使用Ajax和动态HTML技术的网页。Ajax不是一门语言,而是一系列技术,允许网站无需刷新即可与服务器交互。动态HTML(DHTML)则通过客户端语言改变页面元素。在Python中,Selenium库可以执行JavaScript,配合PhantomJS无头浏览器,实现对这类网页的抓取。文章展示了如何使用Selenium和WebDriverWait进行智能等待,确保页面完全加载后再进行数据采集。
摘要由CSDN通过智能技术生成

第一部分:基本概念

       到目前为止,我们与网站服务器的唯一通讯方式,就是发出HTTP请求获取新页面。如果提交表单之后,或从服务器获取信息之后,网站的页面不需要重新刷新,那么你访问的网站就在使用Ajax技术。

       与一些人的印象不大一样,Ajax其实并不是一门语言,而是用来完成网络任务(可以认为它与网络数据采集差不多)的一系列技术。Ajax的全称为Asynchronous JavaScript and XML(异步JavaScript和XML),网站不需要使用单独的页面请求就可以与网络服务器进行交互(收发信息)。需要注意的是:你不应该说“这个网站时Ajax写的”。正确的说法应该是“这个表单用Ajax与网络服务器通信”。

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

       有时你还会发现,网页用一个加载页面把你引到另一个页面上,但是网页的URL链接在这个过程中一直没有变化。如果你采集过很多网站,很有可能遇到这样一种情况。你在浏览器上看到的内容,与你用爬虫从网站上采集的内容不一样。你可能会怀疑自己是不是哪个细节没处理好,希望找出内容采集不出来的原因。这些都是因为你的爬虫不能执行那些让页面产生各种神奇效果的JavaScript代码。如果网站的HTML页面没有运行JavaScript,就可能和你的浏览器里看到的样子完全不同,因为浏览器可以正确执行JavaScript。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值