如何用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 相关文章推荐
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
详解Python import方法引入模块的实例
Aug 02 Python
windows 下python+numpy安装实用教程
Dec 23 Python
python读取目录下最新的文件夹方法
Dec 24 Python
Python检测数据类型的方法总结
May 20 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
python 如何设置守护进程
Oct 29 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介绍篇
2010/10/26 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
django form和field具体方法和属性说明
2020/07/09 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
视图的作用
2014/12/19 面试题
写好自荐信的技巧
2013/11/08 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
工作收入证明模板
2014/10/10 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
安全教育的主题班会
2015/08/13 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS