谈谈如何抓取ajax动态网站

什么是ajax呢,简单来讲,就是加载一个网页完毕以后,有些信息你你仍是看不到,须要你点击某个按钮才能看到数据,或者有些网页是有不少页数据的,而你在点击下一页的时候,网页的url地址没有变化,可是内容变了,这些均可以说是ajax。若是还听不懂,我给你看看百度百科的解释吧,下面就是。python

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种建立交互式网页应用的网页开发技术。mysql

Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。ajax

Ajax 是一种用于建立快速动态网页的技术。sql

Ajax 是一种在无需从新加载整个网页的状况下,可以更新部分网页的技术。 [json

经过在后台与服务器进行少许数据交换,Ajax 可使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行更新。服务器

传统的网页(不使用 Ajax)若是须要更新内容,必须重载整个网页页面。异步

下面说下例子,我抓取过的ajax网页最难的就是网易云音乐的评论,感兴趣的能够看看利用python爬取网易云音乐,并把数据存入mysql工具

这里的评论就是ajax加载的,其余的那个抓今日头条妹子图片的也算是ajax加载的,只不过我把它简单化了。还有不少,就不说了,说下我今天要说的ajax网站吧!post

http://www.kfc.com.cn/kfccda/storelist/index.aspx性能

这个是肯德基的门面信息

这里有不少页数据,每一页的数据都是ajax加载的。若是你直接用python请求上面那个url的话,估计什么数据都拿不到,不信的话能够试试哈。这时候,咱们照常打开开发者工具。先把全部请求清楚,把持续日志打上勾,而后点击下一页,你会看到

上面那个请求就是ajax请求的网页,里面就会有咱们须要的数据,咱们看看是什么样的请求

是个post请求,请求成功状态码为200,请求url上面也有了,下面的from data就是咱们须要post的数据,很容易就能够猜到pageIndex就是页数,因此咱们能够改变这个值来进行翻页。

这个网页就分析完了,这样就是解决ajax动态网页了,是否是以为很简单,其实不是的,只是这个网页比较简单的,由于表单(from data)的数据并无进行加密,若是进行加密的话估计你的找js文件看看参数是怎样加密的了,这就是我以前写的网易云音乐评论的爬取。看这些混淆的js寻找加密方法的话有时会让你很头痛,因此常常有人会选择用selenium这些来进行爬取,可是用这些会使爬虫的性能下降,因此这个方法在工做里是不容许的。因此必须学会怎样应对这些ajax。

贴下代码

import requests
page = 1
while True:
   url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'
   data = {
           'cname''广州',
           'pid''',
           'pageIndex': page,
           'pageSize''10'
   }
   response = requests.post(url, data=data)
   print(response.json())
   if response.json().get('Table1'''):
       page += 1
   else:
       break复制代码

能够看到去掉from data,不用十行代码就能够把数据都爬下来了,因此说这个网站适合练手,你们能够去试试。

写在最后

下篇文章我会写下复杂点的ajax请求,这个网站

http://drugs.dxy.cn/

不知道有多少人想看,想看的话点个赞吧!或者你能够本身先试试哈


推荐文章

如何爬取asp动态网页?搞定可恶的动态参数,这一文告诉你!

利用python爬取网易云音乐,并把数据存入mysql


平常学python

代码不止bug,还有美和乐趣

相关文章
相关标签/搜索