如何用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使用minidom读写xml的方法
Jun 03 Python
python使用mysql数据库示例代码
May 21 Python
Python实现Linux中的du命令
Jun 12 Python
python实现机器人行走效果
Jan 29 Python
python Celery定时任务的示例
Mar 13 Python
python清除函数占用的内存方法
Jun 25 Python
Python unittest单元测试框架总结
Sep 08 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
Python Numpy库的超详细教程
Apr 06 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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.ini中date.timezone设置分析
2011/07/29 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
动手学习无线电
2021/03/10 无线电
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python卸载模块的方法汇总
2016/06/07 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python selenium操作cookie的实现
2020/03/18 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
实习教师自我鉴定
2013/09/27 职场文书
职业技术学校毕业生推荐信
2013/12/03 职场文书
中学生运动会入场词
2014/02/12 职场文书
小学清明节活动方案
2014/03/08 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
物资采购方案
2014/06/12 职场文书
新兵入伍心得体会
2014/09/04 职场文书
普通员工辞职信范文
2015/05/12 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js