如何用python爬取微博热搜数据并保存


Posted in Python onFebruary 20, 2021

主要用到requests和bf4两个库
将获得的信息保存在d://hotsearch.txt下

import requests;
import bs4
mylist=[]
r = requests.get(url='https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6',timeout=10)
print(r.status_code) # 获取返回状态
r.encoding=r.apparent_encoding
demo = r.text
from bs4 import BeautifulSoup
soup = BeautifulSoup(demo,"html.parser")
for link in soup.find('tbody') :
 hotnumber=''
 if isinstance(link,bs4.element.Tag):
#  print(link('td'))
  lis=link('td')
  hotrank=lis[1]('a')[0].string#热搜排名
  hotname=lis[1].find('span')#热搜名称
  if isinstance(hotname,bs4.element.Tag):
   hotnumber=hotname.string#热搜指数
   pass
  mylist.append([lis[0].string,hotrank,hotnumber,lis[2].string])
f=open("d://hotsearch.txt","w+")
for line in mylist:
 f.write('%s %s %s %s\n'%(line[0],line[1],line[2],line[3]))

如何用python爬取微博热搜数据并保存

知识点扩展:利用python爬取微博热搜并进行数据分析

爬取微博热搜

import schedule
import pandas as pd
from datetime import datetime
import requests
from bs4 import BeautifulSoup

url = "https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102"
get_info_dict = {}
count = 0

def main():
  global url, get_info_dict, count
  get_info_list = []
  print("正在爬取数据~~~")
  html = requests.get(url).text
  soup = BeautifulSoup(html, 'lxml')
  for tr in soup.find_all(name='tr', class_=''):
    get_info = get_info_dict.copy()
    get_info['title'] = tr.find(class_='td-02').find(name='a').text
    try:
      get_info['num'] = eval(tr.find(class_='td-02').find(name='span').text)
    except AttributeError:
      get_info['num'] = None
    get_info['time'] = datetime.now().strftime("%Y/%m/%d %H:%M")
    get_info_list.append(get_info)
  get_info_list = get_info_list[1:16]
  df = pd.DataFrame(get_info_list)
  if count == 0:
    df.to_csv('datas.csv', mode='a+', index=False, encoding='gbk')
    count += 1
  else:
    df.to_csv('datas.csv', mode='a+', index=False, header=False, encoding='gbk')

# 定时爬虫
schedule.every(1).minutes.do(main)

while True:
  schedule.run_pending()

pyecharts数据分析

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline, Grid
from pyecharts.globals import ThemeType, CurrentConfig

df = pd.read_csv('datas.csv', encoding='gbk')
print(df)
t = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) # 定制主题
for i in range(int(df.shape[0]/15)):
  bar = (
    Bar()
      .add_xaxis(list(df['title'][i*15: i*15+15][::-1])) # x轴数据
      .add_yaxis('num', list(df['num'][i*15: i*15+15][::-1])) # y轴数据
      .reversal_axis() # 翻转
      .set_global_opts( # 全局配置项
      title_opts=opts.TitleOpts( # 标题配置项
        title=f"{list(df['time'])[i * 15]}",
        pos_right="5%", pos_bottom="15%",
        title_textstyle_opts=opts.TextStyleOpts(
          font_family='KaiTi', font_size=24, color='#FF1493'
        )
      ),
      xaxis_opts=opts.AxisOpts( # x轴配置项
        splitline_opts=opts.SplitLineOpts(is_show=True),
      ),
      yaxis_opts=opts.AxisOpts( # y轴配置项
        splitline_opts=opts.SplitLineOpts(is_show=True),
        axislabel_opts=opts.LabelOpts(color='#DC143C')
      )
    )
      .set_series_opts( # 系列配置项
      label_opts=opts.LabelOpts( # 标签配置
        position="right", color='#9400D3')
    )
  )
  grid = (
    Grid()
      .add(bar, grid_opts=opts.GridOpts(pos_left="24%"))
  )
  t.add(grid, "")
  t.add_schema(
    play_interval=1000, # 轮播速度
    is_timeline_show=False, # 是否显示 timeline 组件
    is_auto_play=True, # 是否自动播放
  )

t.render('时间轮播图.html')

到此这篇关于如何用python爬取微博热搜数据并保存的文章就介绍到这了,更多相关python爬取微博热搜数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python进程管理工具supervisor使用实例
Sep 17 Python
Django自定义用户认证示例详解
Mar 14 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
使用scrapy实现增量式爬取方式
Jun 21 Python
python数字图像处理实现图像的形变与缩放
Jun 28 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 #Python
pandas统计重复值次数的方法实现
Feb 20 #Python
pandas 按日期范围筛选数据的实现
Feb 20 #Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 #Python
pandas按条件筛选数据的实现
Feb 20 #Python
python实现b站直播自动发送弹幕功能
Feb 20 #Python
如何用 Python 制作 GitHub 消息助手
Feb 20 #Python
You might like
PHP rsa加密解密使用方法
2015/04/27 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
TypeScript入门-接口
2017/03/30 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
一些Python中的二维数组的操作方法
2015/05/02 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
python 实现目录复制的三种小结
2019/12/04 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
python 实现性别识别
2020/11/21 Python
python 检测图片是否有马赛克
2020/12/01 Python
《放飞蜻蜓》教学反思
2014/04/27 职场文书
小学节能减排倡议书
2014/05/15 职场文书
环境日宣传活动总结
2014/07/09 职场文书
个人批评与自我批评
2014/10/15 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
民事纠纷协议书
2016/03/23 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS