目录
一.那么问题来了,有622条数据,有没有必要一次加载到页面中?
二.解决方案:使用ajax做局部刷新
1.爬取整个界面
2.通过ajax做局部刷新
(1)导入模块
(2)分析接口,总结规律
(3)代码
3.优化代码
豆瓣网址:/
我们想要爬取豆瓣网上分类是剧情的电影
进入官网---->电影----->排行榜----->分类排行榜------>剧情
点击进入
我们会发现满足条件的有622部电影,
答:没有必要
界面不会把这些电影都给用户展现出来,当我们滑动滚动条的时候,会发现当滑动条快完的时候,滑动条又会变长,自己试一试,体会一下
(1)数据量大,在通信过程中要花费大量的时候,会让用户等待很久,用户体验较差
(2)由于数据量较大,一次加载到内存中会占用大量的内存空间
(3)由于用户只关心前几页的数据,后面的数据如果使用通信得来,或加载到内存江北视为浪费资源
url 就是请求的地址
编写代码
import requests
url='=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action='
response(url)
with open('douban.html','w',encodingding) as fp:fp.)
运行程序:
在火狐浏览器上运行响应回来的界面:
没有有关电影的东西
import requests
第一页:=11&interval_id=100%3A90&action=&start=0&limit=20
第二页:=11&interval_id=100%3A90&action=&start=20&limit=20
第三页:=11&interval_id=100%3A90&action=&start=40&limit=20
.............................
第n页:=11&interval_id=100%3A90&action=&limit=20&start=str(((n-1)*20))
第一种:直接 +拼接
import requests
for page in range(1,11,1):url='=11&interval_id=100%3A90&action=&limit=20&start='+str((page-1)*20)print('第%s页:'%page,url)response(url)for movie in response.json():title=movie['title']address=movie['url']with open('','a',encodingding) as fp:fp.write(title+':'+'t'+address+'n')
第二种:写成json格式
import requestsfor page in range(1, 11, 1):url = ''print('第%s页:'%page,url)data_dic = {'type': '11','interval_id': '100:90','limit': '20','start': str((page - 1) * 20)}response(url,data_dic)# print(response.json())for movie in response.json():title=movie['title']address=movie['url']with open('','a',encodingding) as fp:fp.write(title+":t"+address+"n")
运行结果
看吧 爬虫还是挺有用的吧!!!
爬取数据,能一次性爬完,绝不多次访问
指不定哪天就进不去了,所以能爬的时候都把它爬完
import requestsurl = ''
data_dic = {'type': '11','interval_id': '100:90','limit': '622','start': '0'
}
response(url,data_dic)
# print(response.json())
for movie in response.json():title=movie['title']address=movie['url']with open('','a',encodingding) as fp:fp.write(title+':t'+address+'n')
运行完后,这622部电影的名字和地址都保存在里面了
本文发布于:2024-02-01 16:30:50,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170677625037957.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |