如何用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制作简单的钢琴程序的教程
Apr 01 Python
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
利用Python查看目录中的文件示例详解
Aug 28 Python
Python爬虫框架Scrapy常用命令总结
Jul 26 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
Python socket服务常用操作代码实例
Jun 22 Python
python开发制作好看的时钟效果
May 02 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的十大要点(上)
2009/02/04 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
Vue中props的使用详解
2018/06/15 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
整理Python 常用string函数(收藏)
2016/05/30 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
Python测试线程应用程序过程解析
2019/12/31 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
学生档案自我鉴定
2013/10/07 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
同事吵架检讨书
2014/02/05 职场文书
董事长秘书工作职责
2014/06/10 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
婚宴邀请函
2015/01/30 职场文书
护理专业自荐信范文
2015/03/06 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers