如何用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连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
详解Python的Django框架中的templates设置
May 11 Python
Python 正则表达式的高级用法
Dec 04 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
简单了解Python中的几种函数
Nov 03 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
python随机取list中的元素方法
Apr 08 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
通过shell+python实现企业微信预警
Mar 07 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
详解python中的异常捕获
Dec 15 Python
python excel和yaml文件的读取封装
Jan 12 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来与ODBC数据连接
2006/10/09 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
python版本单链表实现代码
2018/09/28 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
北京振戎融通Java面试题
2015/09/03 面试题
应届大学生求职信
2013/12/01 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
工伤事故证明
2014/10/20 职场文书
先进工作者申报材料
2014/12/23 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python