爬虫之获取ajax加载的内容

本文介绍了如何在爬虫中处理AJAX加载的内容,包括后台偷偷获取数据和前端页面滚动加载两种形式。以高德地图为例,展示了如何找到并解析AJAX请求的JSON数据,以及如何通过循环访问URL获取多页信息。强调了寻找和利用AJAX接口对于爬取动态网页的重要性。
摘要由CSDN通过智能技术生成

网页中的代码来源一般是服务器将整个网页的数据全部返回,但这在访问量大的情况下会给服务器带来不小的压力,因此有些时候采用的是ajax,只给部分内容,其余的有关数据方面的信息只在用户需要时返回。由于ajax的异步的特性,所以不会影响到用户的访问体验。
有些网页内容使用AJAX加载,只要记得,AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了。“作为一名爬虫工程师,你最需要关注的,是数据的来源”。

ajax请求在前端中有两种表现形式,一种是在后台偷偷获取数据,另一种是在右侧进度条滑动到底部时进行数据的加载。

一、后台偷偷获取数据的形式

在此处以高德地图为例:
需要我们进入开发者模式找到network选项,找到获取城市天气信息的请求项,这个请求项是json类型,触发源头是xhr,将请求地址复制下来作为我们访问时的地址。
ajax获取城市数据
在这里插入图片描述
ajax获取城市天气数据
在这里插入图片描述

经过观察可以发现,全国所有高德提供服务的城市都会在一个json中被返回,因此可以获取到该json,解码后获取其中的信息。


"""文件名为‘高德城市分布’的py文件中的内容"""
import requests
import json
base_url = 'https://www.amap.com/service/cityList?'
#加上请求头,伪装成浏览器访问
headers = {
   'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0'}
def city_code():
	#获取响应信息
    reponse = requests.get(url=base_url,headers=headers)
    #取响应信息中的响应体并进行解码
    contents = reponse.content.decode('utf-8')
    #json都需要进行json解码,然后才可以进行下一步操作
    contents = json.loads(contents)
    #解码之后的json一般是字典与列表形式
    citys = contents['data']['cityByLetter']
    city_dict = {
   }
    for k,v in citys.items():
        for code in v:
            # print(code)
            city_dict[code['name']] = code['adcode']
    return city_dict
# print(city_dict)

if __name__ == '__main__':
    print(city_code())

获取城市信息,经过观察可以发现,每当选择一个城市,都会在后台将该城市的编码加入到url中,进行获取城市天气的信息。

import requests
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值