如何用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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
Python学习小技巧总结
Jun 10 Python
python机器学习之KNN分类算法
Aug 29 Python
详解python中的线程与线程池
May 10 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
python同步windows和linux文件
Aug 29 Python
python文字转语音的实例代码分析
Nov 12 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 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中数据的批量导入(csv文件)
2006/10/09 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
javascript 面向对象继承
2009/11/26 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
python实现ftp客户端示例分享
2014/02/17 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
python中defaultdict的用法详解
2017/06/07 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
python中adb有什么功能
2020/06/07 Python
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
写给爸爸的道歉信
2014/01/15 职场文书
医院信息公开实施方案
2014/05/09 职场文书
办公用房租赁协议书
2014/11/29 职场文书
异地恋情人节寄语
2015/02/28 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
结婚典礼致辞
2015/07/28 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
python 模块重载的五种方法
2021/04/24 Python
Python自动化爬取天眼查数据的实现
2021/06/15 Python
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server