如何用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使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
windows下python安装pip方法详解
Feb 10 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
Mar 03 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 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 mysql与mysqli事务使用说明 分享
2013/08/17 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python中操作符重载用法分析
2016/04/29 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Flask框架配置与调试操作示例
2018/07/23 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
机器学习实战之knn算法pandas
2019/06/22 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
django自定义模板标签过程解析
2019/12/14 Python
python 实现屏幕录制示例
2019/12/23 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
法律专业推荐信范文
2013/11/29 职场文书
办理居住证介绍信
2014/01/15 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
2014年除四害工作总结
2014/12/06 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL