• 售前

  • 售后

热门帖子
入门百科

如何用python爬取微博热搜数据并保存

[复制链接]
待该州伙 显示全部楼层 发表于 2021-10-25 19:46:44 |阅读模式 打印 上一主题 下一主题
告急用到requests和bf4两个库
将得到的信息生存在d://hotsearch.txt下
  1. import requests;
  2. import bs4
  3. mylist=[]
  4. r = requests.get(url='https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6',timeout=10)
  5. print(r.status_code) # 获取返回状态
  6. r.encoding=r.apparent_encoding
  7. demo = r.text
  8. from bs4 import BeautifulSoup
  9. soup = BeautifulSoup(demo,"html.parser")
  10. for link in soup.find('tbody') :
  11. hotnumber=''
  12. if isinstance(link,bs4.element.Tag):
  13. #  print(link('td'))
  14.   lis=link('td')
  15.   hotrank=lis[1]('a')[0].string#热搜排名
  16.   hotname=lis[1].find('span')#热搜名称
  17.   if isinstance(hotname,bs4.element.Tag):
  18.    hotnumber=hotname.string#热搜指数
  19.    pass
  20.   mylist.append([lis[0].string,hotrank,hotnumber,lis[2].string])
  21. f=open("d://hotsearch.txt","w+")
  22. for line in mylist:
  23. f.write('%s %s %s %s\n'%(line[0],line[1],line[2],line[3]))
复制代码

知识点扩展:利用python爬取微博热搜并进行数据分析

爬取微博热搜
  1. import schedule
  2. import pandas as pd
  3. from datetime import datetime
  4. import requests
  5. from bs4 import BeautifulSoup
  6. url = "https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102"
  7. get_info_dict = {}
  8. count = 0
  9. def main():
  10.   global url, get_info_dict, count
  11.   get_info_list = []
  12.   print("正在爬取数据~~~")
  13.   html = requests.get(url).text
  14.   soup = BeautifulSoup(html, 'lxml')
  15.   for tr in soup.find_all(name='tr', class_=''):
  16.     get_info = get_info_dict.copy()
  17.     get_info['title'] = tr.find(class_='td-02').find(name='a').text
  18.     try:
  19.       get_info['num'] = eval(tr.find(class_='td-02').find(name='span').text)
  20.     except AttributeError:
  21.       get_info['num'] = None
  22.     get_info['time'] = datetime.now().strftime("%Y/%m/%d %H:%M")
  23.     get_info_list.append(get_info)
  24.   get_info_list = get_info_list[1:16]
  25.   df = pd.DataFrame(get_info_list)
  26.   if count == 0:
  27.     df.to_csv('datas.csv', mode='a+', index=False, encoding='gbk')
  28.     count += 1
  29.   else:
  30.     df.to_csv('datas.csv', mode='a+', index=False, header=False, encoding='gbk')
  31. # 定时爬虫
  32. schedule.every(1).minutes.do(main)
  33. while True:
  34.   schedule.run_pending()
复制代码
pyecharts数据分析
  1. import pandas as pd
  2. from pyecharts import options as opts
  3. from pyecharts.charts import Bar, Timeline, Grid
  4. from pyecharts.globals import ThemeType, CurrentConfig
  5. df = pd.read_csv('datas.csv', encoding='gbk')
  6. print(df)
  7. t = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) # 定制主题
  8. for i in range(int(df.shape[0]/15)):
  9.   bar = (
  10.     Bar()
  11.       .add_xaxis(list(df['title'][i*15: i*15+15][::-1])) # x轴数据
  12.       .add_yaxis('num', list(df['num'][i*15: i*15+15][::-1])) # y轴数据
  13.       .reversal_axis() # 翻转
  14.       .set_global_opts( # 全局配置项
  15.       title_opts=opts.TitleOpts( # 标题配置项
  16.         title=f"{list(df['time'])[i * 15]}",
  17.         pos_right="5%", pos_bottom="15%",
  18.         title_textstyle_opts=opts.TextStyleOpts(
  19.           font_family='KaiTi', font_size=24, color='#FF1493'
  20.         )
  21.       ),
  22.       xaxis_opts=opts.AxisOpts( # x轴配置项
  23.         splitline_opts=opts.SplitLineOpts(is_show=True),
  24.       ),
  25.       yaxis_opts=opts.AxisOpts( # y轴配置项
  26.         splitline_opts=opts.SplitLineOpts(is_show=True),
  27.         axislabel_opts=opts.LabelOpts(color='#DC143C')
  28.       )
  29.     )
  30.       .set_series_opts( # 系列配置项
  31.       label_opts=opts.LabelOpts( # 标签配置
  32.         position="right", color='#9400D3')
  33.     )
  34.   )
  35.   grid = (
  36.     Grid()
  37.       .add(bar, grid_opts=opts.GridOpts(pos_left="24%"))
  38.   )
  39.   t.add(grid, "")
  40.   t.add_schema(
  41.     play_interval=1000, # 轮播速度
  42.     is_timeline_show=False, # 是否显示 timeline 组件
  43.     is_auto_play=True, # 是否自动播放
  44.   )
  45. t.render('时间轮播图.html')
复制代码
到此这篇关于怎样用python爬取微博热搜数据并生存的文章就先容到这了,更多干系python爬取微博热搜数据内容请搜刮草根技术分享以前的文章或继续欣赏下面的干系文章渴望各人以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作