最近有小伙伴看完蜜蜂之前分享的爬虫文章之后,使用python代码实现了自动保存网站上面的图片到本地,但是最近又有新的需求。
需求描述:爬取微博文娱榜的数据, 并保存到csv文件中
网址:https://weibo.com/hot/entertainment
需要将一下框上的两个字段都爬取下来。
对于这样的需求,看过蜜蜂之前的文章的小伙伴可能首先想到的就是爬取网页源代码,然后用xpath来提取相应字段。但是这样去代码实现的时候会发现无法得到想要的结果,这是因为这是一个动态页面。以下是蜜蜂的代码实现过程:
# @File:微博文娱榜.py
# author:蜜蜂
# Time:2023/12/20 14:40
# 爬取微博文娱榜的数据, 并保存到csv文件中, 字段: 标题, 热度 url: https://weibo.com/hot/entertainment
import os
import requests
def weibo():
url='https://weibo.com/ajax/statuses/entertainment'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Cookie':'SUB=_2AkMSMUvRf8NxqwFRmfoXyGznbI5xww7EieKkbboKJRMxHRl-yT9vqk4ItRB6ObFlPtAZ_SYtdFXhjYjm0wD3d3rxCkxs; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9Whgy2VB5gQk2weS6KFXAbKu; XSRF-TOKEN=f_eYOMcZ_wkhA-iwLZg3zAWM; WBPSESS=V0zdZ7jH8_6F0CA8c_ussTgcazs36Qa0WqntzpwqwQekG_hUALsg_lThPDKYLprWTXfAIcFz0LjPkeWC2cajRDlLwn55X7Z23FZW7fUqa4BjyMfL3gY8riKpxPIkkSdF'
}
resp=requests.get(url,headers=headers).json()
band_list=resp['data']['band_list']
len_list=(len(band_list))
with open('微博文娱榜.csv','w') as f:
for i in range(len_list):
hot_num = band_list[i]['hot_num']
title = band_list[i]['note']
print(title,end='\t')
print(hot_num)
f.write(f'{title},{hot_num}\n')
if __name__ == '__main__':
weibo()
运行效果:
保存的csv文件:
标签:weibo,文娱,python,list,微博,hot,band,Ajax From: https://blog.51cto.com/u_15937426/8910055