每天30分钟,一起来学习爬虫——day4(urllib库——Ajax 实例:豆瓣电影,KFC餐厅地址)

Ajax 数据抓取

什么是Ajax?

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

Ajax 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

Ajax-get 请求

今天我们看的是豆瓣的电影排行——>就是这个东东
在这里插入图片描述
在这里插入图片描述在豆瓣电影里,当我们把滚动条拉到最底下后,会重新加载,但是页面没有刷新,这是另一个接口,是Ajax数据,而这时看一下,时get请求
我们再F12一下,Ajax数据看,不用看ALL 直接看XHR
在这里插入图片描述分析 query string 我们发现 start limit
经过分析,我们 知道,start 是指从第几条电影开始,limit是指,每次加载多少
下面我们写代码:

import urllib.request
import urllib.parse

url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'

page = input('请输入你先要第几页的数据')
number = 20
start = (int(page)-1)*number
data = {
    'start': start,
    'limit': number,

}

# 将字典来转化为 query_string
query_string = urllib.parse.urlencode(data)
#print(query_string)
url += query_string
#print(url)
# 这里的头部,我就简单的伪装一下
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'
}
# 构建请求对象,发送请求
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
# 打印一下看看
print(response.read().decode())

顺利的,我们成功了,来个图看看
在这里插入图片描述我们发现Ajax get请求数据的抓取和普通get的没有太大区别,主要的要分析传递的参数,

Ajax-post 请求

下面我们查询一下肯德基餐厅的地址信息
在这里插入图片描述在这里插入图片描述同样我们看到了三个参数,keyword pagelndex pageSiz 分析于上面相似,直接看代码 ,不多解释了

import urllib.request
import urllib.parse

url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'
city = input('你所在的城市:')
page = input('你想浏览的页码:')
pagesize = input('你想每页显示几个:')

# 构建处理表单 
formdata = {
    'cname': city,
    'pid': '',
    'pageIndex': page,
    'pageSize': pagesize,
}
formdata = urllib.parse.urlencode(formdata).encode()

# 伪装
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'

}

request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request,data=formdata)

print(response.read().decode())

如果想看好几页,那就循环抓取一下,今天就学这些了,

明天我们学习一下 代理设置和 URLError

我又来要赞了,如果觉得可以学到些什么,或者讲解的清楚的话,点个赞再走吧
欢迎各位路过的大佬评论,指正错误

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值