如何用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获取android设备的GPS信息脚本分享
Mar 06 Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 Python
python简单实现旋转图片的方法
May 30 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python pygame实现挡板弹球游戏
Nov 25 Python
Python如何读取文件中图片格式
Jan 13 Python
Django封装交互接口代码
Jul 12 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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程序员基本要求和必备技能
2014/05/09 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Python tkinter常用操作代码实例
2020/01/03 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
我的五年职业生涯规划
2014/01/23 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
实习公司领导推荐函
2014/05/21 职场文书
教师节宣传方案
2014/05/23 职场文书
学校春季防火方案
2014/06/08 职场文书
营销计划书
2015/01/17 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
k8s部署redis cluster集群的实现
2021/06/24 Redis
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL