如何用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基础教程之python消息摘要算法使用示例
Feb 10 Python
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
基于Python os模块常用命令介绍
Nov 03 Python
python SMTP实现发送带附件电子邮件
May 22 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
Django 大文件下载实现过程解析
Aug 01 Python
记录模型训练时loss值的变化情况
Jun 16 Python
Python3爬虫里关于Splash负载均衡配置详解
Jul 10 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 26 Python
简单介绍Python的第三方库yaml
Jun 18 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
Python中with上下文管理协议的作用及用法
Mar 18 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 中执行系统外部命令
2006/10/09 PHP
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
做web开发 先学JavaScript
2014/12/12 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
js实现登录与注册界面
2017/11/01 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
Python如何计算语句执行时间
2019/11/22 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
jupyter notebook 重装教程
2020/04/16 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
渡河少年教学反思
2014/02/12 职场文书
司法局火灾防控方案
2014/06/05 职场文书
药剂专业自荐书
2014/06/20 职场文书
大学生作弊检讨书
2014/09/11 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
考察邀请函范文
2015/01/31 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL
详解Vue的列表渲染
2021/11/20 Vue.js