如何从动态加载网页抓取数据
1、获取请求对象
- 网页打开网址:如 https://vc.bilibili.com/p/eden/rank#/?tab=%E5%85%A8%E9%83%A8
- 那么如何从这个网页上加载数据呢,点击F12查看
2、请求数据
- 我们看到请求数据是按照page_size来获取的,这样我们就可以模拟Request请求,获取数据
- 下面请看代码
import requests
# 1.分析网站真是请求地址---抓包分析
def get_json(url):
# 伪装 程序伪装成浏览器
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'}
params = {
'page_size' : 10,
'next_offset': str(num), # 不断变化
'tag': '今日热门',
'platform': 'pc'
}
# url = 'https://api.vc.bilibili.com/board/v1/ranking/top?' # 找到真实请求地址
html = requests.get(url,params=params, headers=headers)
# print(html)
return html.json()
# 抓取大量数据 大量地址
# 1 11 21 31 41 :递增10 一个真实请求地址:包含10个视频
if __name__ == '__main__': # 可写可不写
for i in range(10):
url = 'https://api.vc.bilibili.com/board/v1/ranking/top?'
num = i * 10 + 1 # num == offset
html = get_json(url)
# 2.解析数据
infos = html['data']['items']
# print(infos)#list 列表[] ()tuple元祖 {}dict字典
for info in infos:
title = info['item']['description']
vedio_url = info['item']['video_playurl']
print(title, vedio_url)
运行结果如下:
抓取的将是每一个视频地址,点击可打开下载或者观看
以上就上简单实现动态网页抓取数据的全部过程
欢迎交流学习。