抓取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请求,这个网站

  不知道有多少人想看,想看的就给个赞吧!或者你可以自己试试

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线