首页 > 编程语言 >python代码实现保存微博文娱榜的数据Ajax异步加载

python代码实现保存微博文娱榜的数据Ajax异步加载

时间:2023-12-20 18:32:55浏览次数:43  
标签:weibo 文娱 python list 微博 hot band Ajax

最近有小伙伴看完蜜蜂之前分享的爬虫文章之后,使用python代码实现了自动保存网站上面的图片到本地,但是最近又有新的需求。

需求描述:爬取微博文娱榜的数据, 并保存到csv文件中

网址:https://weibo.com/hot/entertainment

需要将一下框上的两个字段都爬取下来。

python代码实现保存微博文娱榜的数据Ajax异步加载_字段

对于这样的需求,看过蜜蜂之前的文章的小伙伴可能首先想到的就是爬取网页源代码,然后用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()

运行效果:

python代码实现保存微博文娱榜的数据Ajax异步加载_数据_02

保存的csv文件:

python代码实现保存微博文娱榜的数据Ajax异步加载_Ajax_03

标签:weibo,文娱,python,list,微博,hot,band,Ajax
From: https://blog.51cto.com/u_15937426/8910055

相关文章

  • 【misc】[HNCTF 2022 WEEK2]calc_jail_beginner_level4(JAIL) --沙盒逃逸,python模板注
    查看附件信息这里禁用了__import__,直接导致了help()函数和breakpoint()函数没法使用,并且还过滤了关键字符,这里考虑python模板注入,但是这里还过滤chr(),这里可以使用bytes函数payload如下:().__class__.__base__.__subclasses__()[-4].__init__.__globals__['system']('sh')......
  • python之常用模块
    【time/datetime】(时间模式转换)    【datetime】 【os模块】  【random模块】 【json模块:序列化与反序列化】  案例  【subprocess模块】  【hash模块】 案例 【sys模块】 ......
  • python 装饰器
    课堂上学习的装饰器统计函数的执行时间  defouter(func):definner(*args,**kwargs):start_time=time.time()res=func(*args,**kwargs)end_time=time.time()returnres,end_time-start_timereturninner@outerdefadd......
  • AVL树和红黑树的Python代码实现
    AVL树AVL树是一种自平衡二叉搜索树。在这种树中,任何节点的两个子树的高度差被严格控制在1以内。这确保了树的平衡,从而保证了搜索、插入和删除操作的高效性。AVL树是由GeorgyAdelson-Velsky和EvgeniiLandis在1962年发明的,因此得名(Adelson-Velsky和Landis树)。  平衡因子:每个节......
  • 【Python&目标识别】Yolo v5-7.0版本中文标签显示方法(附字体链接)
    ​    Yolo的程序之前已经定制化输出过了,但是最近业主突然想要中文的标签,所以赶紧去修改了一下源代码,从网上发现很多资料都改这改那,搞四五个文件结果还没成功。所以自己研究了一下,现在已经完美解决了。今天就和大家分享一下Yolov5-7.0版本的目标识别如何添加中文的标签......
  • 利用Python进行数据分析_Pandas_Numpy高级应用
    Numpy高级应用1.ndarray对象内部机理importpandasaspdimportnumpyasnpfrompandasimportSeries,DataFrameimportwarningswarnings.filterwarnings("ignore")略2.高级数组操作arr=np.arange(8)arrarray([0,1,2,3,4,5,6,7])arr_new=arr.reshape......
  • Python中配置Excel导出模板
    定义Excel列对象classExcelColumn:"""定义Excel中的列参数:name(str):列的名称。width(int|None,可选):列的宽度。默认为None。required(bool,可选):指示列是否必需。默认为False。mapping_factory(Callable......
  • Python语言实现两台计算机用TCP协议跨局域网通信
    成果展示:(这张图是在我本地电脑上用pycharm运行两个程序测试,实际可以在两台电脑上分别运行。)设备要求和实现的功能:实现的功能:跨局域网通信(仅支持两台计算机)跨局域网收发小文件,支持缓存在服务器,再一键接收(仅支持两台计算机)使用方法:在服务器上运行server.py程序,在两台客户......
  • python中的 时间、日期写法。
    python打印当前日期时间 一、打印 带日期与时间点 方法一:使用datetime模块:importdatetimenow=datetime.datetime.now()print(now)效果如下: 方法二:使用time模块:importtimenow=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())print(now) ......
  • 提高Python开发效率的实用方法
    Python作为一种简洁而强大的编程语言,广泛应用于各种领域的软件开发。提高Python开发效率是开发者们关注的重要课题。本文将分享一些实用的方法,帮助您在Python开发中更高效地完成任务,提高代码质量和开发速度。1.使用虚拟环境:在项目开发中,使用虚拟环境是一种良好的实践。虚拟环境可以......