抓取ajax动态网页java(什么是ajax呢,简单来说,就是加载一个网页完毕)
优采云 发布时间: 2022-04-11 05:30抓取ajax动态网页java(什么是ajax呢,简单来说,就是加载一个网页完毕)
什么是ajax?简单来说就是加载一个网页后,还是看不到一些信息,需要点击一个按钮才能看到数据,或者有些网页的页面数据很多,而你在点击下一页,网页的url地址没有变,但是内容变了,可以说是ajax了。如果你还是不明白,我给你看百度百科的解释,这里是解释。
Ajax 代表“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),它指的是一种用于创建交互式 Web 应用程序的 Web 开发技术。
Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
Ajax 是一种用于创建快速和动态网页的技术。
Ajax 是一种无需重新加载整个网页即可更新网页部分的技术。[
Ajax 可以通过在后台与服务器交换少量数据来异步更新网页。这意味着可以在不重新加载整个页面的情况下更新页面的某些部分。
如果内容需要更新,传统网页(不使用 Ajax)必须重新加载整个网页。
让我们谈谈一个例子。我爬过的最难的ajax页面是网易云音乐的评论。如果你有兴趣,你可以看看。
这里的评论都是ajax加载的,其他抢到今日头条妹子图片的也是ajax加载的,不过我简化了。还有很多,就不多说了,先说说我今天要说的ajax网站吧!
这是肯德基的门面信息
这里有很多页的数据,每页的数据都是ajax加载的。如果直接用python去请求上面的url,估计是拿不到任何数据的。如果你不相信,你可以试试。这时候,我们照常打开开发者工具。首先清除所有请求,勾选连续日志,然后点击下一页,你会看到
上面的请求就是ajax请求的网页,里面会有我们需要的数据。让我们看看是什么样的请求
这是一个发布请求。请求成功状态码是 200。请求 url 也在那里。以下来自 data 是我们需要发布的数据。很容易猜到pageIndex就是页数,所以我们可以改变这个值来翻页。
这个网页分析完了,这就是ajax动态网页的解决方案,是不是觉得很简单,其实不然,但是这个网页还是比较简单的,因为form的数据(来自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复制代码
可以看到,如果从数据中移除,不用十行代码就可以把所有的数据都爬下来,所以这个网站很适合练习,大家可以试试。
写在最后
在下一篇文章我会写一个复杂的ajax请求,这个网站
不知道有多少人想看,想看的就给个赞吧!或者你可以自己试试