python爬取微博热搜数据并保存!

python教程

共 3528字,需浏览 8分钟

 ·

2021-02-21 13:02



主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist=[]r=requests.get(ur...


主要用到requests和bf4两个库
将获得的信息保存在d://hotsearch.txt下

  1. import requests;

  2. import bs4

  3. mylist=[]

  4. = 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.  

  7. url = "https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102"

  8. get_info_dict = {}

  9. count = 0

  10.  

  11. def main():

  12. global url, get_info_dict, count

  13. get_info_list = []

  14. print("正在爬取数据~~~")

  15. html = requests.get(url).text

  16. soup = BeautifulSoup(html, 'lxml')

  17. for tr in soup.find_all(name='tr', class_=''):

  18. get_info = get_info_dict.copy()

  19. get_info['title'] = tr.find(class_='td-02').find(name='a').text

  20. try:

  21. get_info['num'] = eval(tr.find(class_='td-02').find(name='span').text)

  22. except AttributeError:

  23. get_info['num'] = None

  24. get_info['time'] = datetime.now().strftime("%Y/%m/%d %H:%M")

  25. get_info_list.append(get_info)

  26. get_info_list = get_info_list[1:16]

  27. df = pd.DataFrame(get_info_list)

  28. if count == 0:

  29. df.to_csv('datas.csv', mode='a+', index=False, encoding='gbk')

  30. count += 1

  31. else:

  32. df.to_csv('datas.csv', mode='a+', index=False, header=False, encoding='gbk')

  33.  

  34. # 定时爬虫

  35. schedule.every(1).minutes.do(main)

  36.  

  37. while True:

  38. 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.  

  6. df = pd.read_csv('datas.csv', encoding='gbk')

  7. print(df)

  8. = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) # 定制主题

  9. for i in range(int(df.shape[0]/15)):

  10. bar = (

  11. Bar()

  12. .add_xaxis(list(df['title'][i*15: i*15+15][::-1])) # x轴数据

  13. .add_yaxis('num', list(df['num'][i*15: i*15+15][::-1])) # y轴数据

  14. .reversal_axis() # 翻转

  15. .set_global_opts( # 全局配置项

  16. title_opts=opts.TitleOpts( # 标题配置项

  17. title=f"{list(df['time'])[i * 15]}",

  18. pos_right="5%", pos_bottom="15%",

  19. title_textstyle_opts=opts.TextStyleOpts(

  20. font_family='KaiTi', font_size=24, color='#FF1493'

  21. )

  22. ),

  23. xaxis_opts=opts.AxisOpts( # x轴配置项

  24. splitline_opts=opts.SplitLineOpts(is_show=True),

  25. ),

  26. yaxis_opts=opts.AxisOpts( # y轴配置项

  27. splitline_opts=opts.SplitLineOpts(is_show=True),

  28. axislabel_opts=opts.LabelOpts(color='#DC143C')

  29. )

  30. )

  31. .set_series_opts( # 系列配置项

  32. label_opts=opts.LabelOpts( # 标签配置

  33. position="right", color='#9400D3')

  34. )

  35. )

  36. grid = (

  37. Grid()

  38. .add(bar, grid_opts=opts.GridOpts(pos_left="24%"))

  39. )

  40. t.add(grid, "")

  41. t.add_schema(

  42. play_interval=1000, # 轮播速度

  43. is_timeline_show=False, # 是否显示 timeline 组件

  44. is_auto_play=True, # 是否自动播放

  45. )

  46.  

  47. t.render('时间轮播图.html')

到此这篇关于如何用python爬取微博热搜数据并保存的文章就介绍到这了

扫下方二维码加老师微信

或是搜索老师微信号:XTUOL1988【切记备注学习Python】

领取Python web开发,Python爬虫,Python数据分析,人工智能等学习教程。带你从零基础系统性的学好Python!

也可以加老师建的Python技术学习教程qq裙:245345507,二者加一个就可以!

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持


万水千山总是情,点个【在看】行不行

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜

浏览 46
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报