ajax抓取网页内容(什么是ajax呢,简单来说,就是加载一个网页完毕)
优采云 发布时间: 2021-10-13 08:05ajax抓取网页内容(什么是ajax呢,简单来说,就是加载一个网页完毕)
什么是阿贾克斯?简单的说,加载一个网页后,还是看不到一些信息,需要点击一个按钮才能看到数据,或者有的网页页面数据很多,而你点击了下一页,url地址网页没有变,但内容变了。这些可以说是ajax。如果你还是不明白,下面就让我给你看看百度百科的解释吧。
Ajax 代表“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),它指的是一种用于创建交互式 Web 应用程序的 Web 开发技术。
Ajax = 异步 JavaScript 和 XML(标准通用标记语言的一个子集)。
Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种无需重新加载整个网页即可更新网页的一部分的技术。[
通过在后台与服务器交换少量数据,Ajax 可以使网页异步更新。这意味着可以在不重新加载整个网页的情况下更新网页的某些部分。
如果内容需要更新,传统网页(不使用 Ajax)必须重新加载整个网页。
让我们来谈谈一个例子。我爬过的ajax网页最难的部分是网易云音乐的评论。如果你有兴趣,你可以去看看。
这里的评论是Ajax加载的,其他抢今日头条图片的妹子也是Ajax加载的,不过我简化了。还有很多,先不说,先说ajax网站 今天要说的!
这是肯德基的门面信息
页面数据很多,每个页面的数据都是通过ajax加载的。如果直接用python请求上面的url,估计是拿不到数据的。如果你不相信,你可以试试。这时候我们照常打开开发者工具。首先清除所有请求,勾选连续日志,然后点击下一页,你会看到
上面的请求是ajax请求的网页,里面会有我们需要的数据,看看是个什么样的请求
是post请求,请求成功状态码为200,请求url也在上面。下面的from数据就是我们需要发布的数据。很容易猜到pageIndex是页数,所以我们可以改变这个值来翻页。
本网页进行了分析。这是ajax动态网页的解决方案。是不是感觉很简单?事实上,事实并非如此。只是网页比较简单,因为表单中的数据(来自数据)没有加密。如果是加密的,估计你找js文件看看参数是怎么加密的。这是我之前写的网易云音乐评论的爬取。看着这些乱七八糟的js找加密方式有时会让你头疼,所以人们往往会选择使用selenium进行爬虫,但是使用这些会降低爬虫的性能,所以在工作中是不允许这种方式的。所以我们必须学会如何处理这些ajax。
邮政编码
import requests<br style="margin:0px;padding:0px;max-width:100%;" />page = 1<br style="margin:0px;padding:0px;max-width:100%;" />while True:<br style="margin:0px;padding:0px;max-width:100%;" /> url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'<br style="margin:0px;padding:0px;max-width:100%;" /> data = {<br style="margin:0px;padding:0px;max-width:100%;" /> 'cname': '广州',<br style="margin:0px;padding:0px;max-width:100%;" /> 'pid': '',<br style="margin:0px;padding:0px;max-width:100%;" /> 'pageIndex': page,<br style="margin:0px;padding:0px;max-width:100%;" /> 'pageSize': '10'<br style="margin:0px;padding:0px;max-width:100%;" /> }<br style="margin:0px;padding:0px;max-width:100%;" /> response = requests.post(url, data=data)<br style="margin:0px;padding:0px;max-width:100%;" /> print(response.json())<br style="margin:0px;padding:0px;max-width:100%;" /> if response.json().get('Table1', ''):<br style="margin:0px;padding:0px;max-width:100%;" /> page += 1<br style="margin:0px;padding:0px;max-width:100%;" /> else:<br style="margin:0px;padding:0px;max-width:100%;" /> break
可以看到,通过从数据中移除,不用十行代码就可以把所有的数据搞下来,所以这个适合练习,大家可以试试。
写在最后
下一篇文章我会写一个更复杂的ajax请求,这个网站