如何用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 08 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
python多线程之事件Event的使用详解
Apr 27 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
python将一组数分成每3个一组的实例
Nov 14 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python调用自定义函数的实例操作
Jun 26 Python
pymysql模块的操作实例
Dec 17 Python
Python识别html主要文本框过程解析
Feb 18 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
解决paramiko执行命令超时的问题
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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
js类 from qq
2006/11/13 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
详解Python的单元测试
2015/04/28 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python模拟表单提交登录图书馆
2018/04/27 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
Python3数字求和的实例
2019/02/19 Python
python程序如何进行保存
2020/07/03 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
服务员自我评价
2014/01/25 职场文书
运动会解说词200字
2014/02/06 职场文书
社团活动总结模板
2014/06/30 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
关于环保的宣传稿
2015/07/23 职场文书
公司人力资源管理制度
2015/08/05 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
javascript的var与let,const之间的区别详解
2022/02/18 Javascript
在Python 中将类对象序列化为JSON
2022/04/06 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android