摸鱼工具—终端热搜榜,实在是上班摸鱼必备之工具,妙啊

本文介绍我用Python语言开发的热搜榜,聚合有百度、头条、微博、知乎和CSDN等网站热搜信息。该工具运行于终端中,比如cmder、powershell或者git bash等,实在是上班、摸鱼之必备工具。

—、工具执行效果

1.1 项目代码

项目代码地址存在gitee中,仓库地址:https://gitee.com/shawn_chen_rtz/hot_billboard.git,欢迎Star。

代码结构:

图片

app.py文件是项目启动文件,执行python app.py,根据提示进行后续操作即可。

1.2 执行效果

执行效果如下,

图片

输入对应数字访问不同网站热搜列表,输入字母q或者Q,工具退出运行。

图片

比如,输入数字3,对应微博热搜列表,

图片

热搜列表打印出后,输入对应数字获取访问链接,

图片

CSDN热搜榜,

图片

1.3 app.py启动文件程序

app.py程序,


# -*- coding:utf-8 -*-
from baidu_hot import get_baidu_hot
from toutiao_hot import get_toutiao_hot
from weibo_hot import get_weibo_hot
from zhihu_hot import get_zhihu_hot
from csdn_hot import get_csdn_hot
import time
print("欢迎回来!请输入对应数字浏览热搜")
on = True
while on:user_input = input("1-baidu;2-toutiao;3-weibo;4-zhihu;5-CSDN;q/Q-退出;请输入:")if user_input == '1':get_baidu_hot()elif user_input == '2':get_toutiao_hot()elif user_input == '3':get_weibo_hot()elif user_input == '4':get_zhihu_hot()elif user_input == '5':get_csdn_hot()elif user_input == 'q' or user_input == 'Q':on = Falseelse:print("用户非法输入,3s后刷新,重新选择操作")time.sleep(3)
print("退出应用成功,期待再次光临")

一个while循环,循环体中根据用户输入内容进行条件判断,执行对应方法。

二、百度热搜实现

2.1 涉及模块

获取百度热搜方法实现需要导入模块requests、BeautifulSoup、re、time

2.2 对应接口

百度热搜接口:

https://top.baidu.com/board?tab=realtime

2.3 代码实现

代码实现,​​​​​​​

import requests
from bs4 import BeautifulSoup
import re
import time
def get_baidu_hot():while True:baidu_top = "https://top.baidu.com/board?tab=realtime"resp = requests.get(baidu_top)resp.encoding = 'utf-8'html = resp.textsoup = BeautifulSoup(html,'html.parser')news = soup.findAll(class_="content_1YWBm")news.reverse()i = 0news_ls = []for new in news:i = i + 1url = new.find('a').attrs['href']text = new.find(class_="c-single-text-ellipsis").textnews_ls.append({"text":text.strip(),"url":url})print(('\033[1;37m'+str(i)+'\033[0m').center(50,"*"))print("\033[1;36m"+text.strip()+"\033[0m")# news_ls.reverse()user_input = input("输入新闻编号获取进一步访问的超链接,输入q/Q退出,输入r/R刷新热榜:")if user_input == 'q' or user_input == 'Q':breakelif user_input == 'r' or user_input == 'R':continueelif user_input in [str(i) for i in range(1,len(news_ls)+1)]:news_index = eval(user_input) - 1print(news_ls[news_index].get('url'))print("\033[1;33m" + "按住Ctrl键,点击超链接进行访问" + "\033[0m")print('\033[5;31m'+'10s后自动刷新热榜'+'\033[0m')time.sleep(10)continueelse:print("Invalid User Input.")print('\033[5;31m'+"3s后自动刷新热榜"+'\033[0m')time.sleep(3)continueprint("Over,退出百度热搜!")

其中需要注意,根据接口返回页面数据具体情况使用BeautifulSoup模块。

三、头条热搜实现

3.1 涉及模块

获取头条热搜方法实现需要导入模块requests、time

3.2 对应接口

头条热搜的访问接口:

https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc

3.3 代码实现

代码实现,


import requests
import time
def get_toutiao_hot():while True:url = "https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc"resp = requests.get(url)resp.encoding = 'utf-8'resp = resp.json()news_ls = []i = 0news = resp.get('data')news.reverse()for new in news:i += 1print(('\033[1;37m'+str(i)+'\033[0m').center(50,'*'))news_ls.append({'title':new.get('Title'),'url':new.get('Url')})print('\033[1;36m'+new.get('Title')+'\033[0m')fixed_top_data = resp.get('fixed_top_data')fixed_top_data = fixed_top_data[0]news_ls.append({'title':fixed_top_data.get('Title'),'url':fixed_top_data.get('Url')})print(('\033[1;37m'+str(i+1)+'\033[0m').center(50,'*'))print('\033[1;36m'+news_ls[-1].get('title')+'\033[0m')user_input = input("输入新闻编号获取进一步访问的超链接,输入q/Q退出,输入r/R刷新热榜:")if user_input == 'q' or user_input == 'Q':breakelif user_input == 'r' or user_input == 'R':continueelif user_input in [str(i) for i in range(1,len(news_ls)+1)]:news_index = eval(user_input) - 1print(news_ls[news_index].get('url'))print("\033[1;33m" + "按住Ctrl键,点击超链接进行访问" + "\033[0m")print('\033[5;31m'+'10s后自动刷新热榜'+'\033[0m')time.sleep(10)continueelse:print("Invalid User Input.")print('\033[5;31m'+"3s后自动刷新热榜"+'\033[0m')time.sleep(3)continueprint("Over,退出头条热搜!")

​​​​​​​ 与百度热搜的区别是,该接口返回json数据,不是html源代码。所以不需要使用模块BeautifulSoup、re分析匹配页面元素。返回数据处理相对简单~

四、微博热搜实现

4.1 涉及模块

获取微博热搜方法实现需要导入模块requests、time、BeautifulSoup

4.2 对应接口

微博热搜的访问接口:

https://s.weibo.com/top/summary?cate=realtimehot

需要注意的是该接口的访问需要设置请求头,设置对应cookie信息,否则访问异常。

cookie信息,本章节的代码实现中是随机设置的,可以通过以下方法自行查找获取设置。浏览器页面访问https://s.weibo.com/top/summary?cate=realtimehot,F12找到该请求,如下图。

图片

4.3 代码实现

代码实现,​​​​​​​


import requests
import time
from bs4 import BeautifulSoup
def get_weibo_hot():while True:url = "https://s.weibo.com/top/summary?cate=realtimehot"headers = {"Cookie":"SUB=_2AxxxxxxxxxNxqwJxxx3dtWXlM5SjftExkMQK6NASTHqZWXWFEB;"}resp = requests.get(url=url,headers=headers)resp.encoding = 'utf-8'html = resp.textsoup = BeautifulSoup(html,'html.parser')news = soup.findAll(class_='td-02')news.reverse()base_url = "https://s.weibo.com"news_ls = []i = 0for new in news:i = i + 1url = base_url + new.find('a').attrs['href']# print(url)title = new.find('a').textprint(('\033[1;37m' + str(i) + '\033[0m').center(50,'*'))print('\033[1;36m' + title + '\033[0m')news_ls.append({"title":title,"url":url})news_length = len(news_ls)# news_ls.reverse()user_input = input("输入新闻编号获取进一步访问的超链接,输入q/Q退出,输入r/R刷新热榜:")if user_input == 'q' or user_input == 'Q':breakelif user_input == 'r' or user_input == 'R':continueelif user_input in [str(i) for i in range(1,news_length+1)]:news_index = eval(user_input) - 1print(news_ls[news_index].get('url'))print("\033[1;33m" + "按住Ctrl键,点击超链接进行访问" + "\033[0m")print('\033[5;31m'+'10s后自动刷新热榜'+'\033[0m')time.sleep(10)continueelse:print("Invalid User Input.")print('\033[5;31m'+"3s后自动刷新热榜"+'\033[0m')time.sleep(3)continueprint("Over,退出微博热搜!")

同百度热搜返回结果处理类似,需要使用BS模块对返回数据进行处理,查找到对应热搜数据。BeautifulSoup模块在网页爬虫数据处理中起到很大的作用,可以重点关注下该模块。

五、知乎热搜实现

5.1 涉及模块

获取知乎热搜方法实现需要导入模块requests、time、BeautifulSoup、json

5.2 对应接口

知乎热搜的访问接口:

https://www.zhihu.com/billboard

5.3 代码实现

代码实现,​​​​​​​


import requests
import time
from bs4 import BeautifulSoup
import json
def get_zhihu_hot():while True:url = "https://www.zhihu.com/billboard"resp = requests.get(url)resp.encoding = 'utf-8'html = resp.textsoup = BeautifulSoup(html,'html.parser')news = soup.findAll(class_='HotList-itemTitle')# print(len(news))news_ls = []title_ls = []for new in news:title = new.text# print(title)title_ls.append(title)js_text_dict = json.loads(soup.find('script',{'id':'js-initialData'}).get_text())#print(js_text_dict['initialState']['topstory']['hotList'])js_text_dict = js_text_dict['initialState']['topstory']['hotList']url_ls = []for new in js_text_dict:url = new['target']['link']['url']url_ls.append(url)news_ls = [{'title':title_ls[i],'url':url_ls[i]} for i in range(len(title_ls))]news_ls.reverse()# print(news_ls)i = 0for new in news_ls:i += 1print(('\033[1;37m'+str(i)+'\033[0m').center(50,"*"))print('\033[1;36m'+new.get('title')+'\033[0m')news_length = len(news_ls)# news_ls.reverse()user_input = input("输入新闻编号获取进一步访问的超链接,输入q/Q退出,输入r/R刷新热榜:")if user_input == 'q' or user_input == 'Q':breakelif user_input == 'r' or user_input == 'R':continueelif user_input in [str(i) for i in range(1,news_length+1)]:news_index = eval(user_input) - 1print(news_ls[news_index].get('url'))print("\033[1;33m" + "按住Ctrl键,点击超链接进行访问" + "\033[0m")print('\033[5;31m'+'10s后自动刷新热榜'+'\033[0m')time.sleep(10)continueelse:print("Invalid User Input.")print('\033[5;31m'+"3s后自动刷新热榜"+'\033[0m')time.sleep(3)continueprint("Over,退出知乎热搜!")

六、CSDN热搜实现

6.1 涉及模块

获取CSDN热搜方法实现需要导入模块requests、time

6.2 对应接口

CSDN热搜的访问接口:

https://blog.csdn.net/phoenix/web/blog/hot-rank?page=0&pageSize=50

https://blog.csdn.net/phoenix/web/blog/hot-rank?page=1&pageSize=50

注意!该接口返回数据较多,使用了分页参数page和pageSize,注意page参数替换成对应数字即可。比如0和1;该接口访问也需要设置请求头,否则返回不了正确数据。

6.3 代码实现

代码实现,​​​​​​​


import requests
import time
def get_csdn_hot():while True:news_ls = []for i in range(2):url = "https://blog.csdn.net/phoenix/web/blog/hot-rank?page=" + str(i) + "&pageSize=50"#print(url)# csdn做了校验,必须设置请求头中的User-Agent才能成功返回内容headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}resp = requests.get(url,headers=headers)resp = resp.json()news = resp['data']for new in news:news_ls.append({"title":new.get('articleTitle'),"url":new.get('articleDetailUrl')})i = 0news_ls.reverse()for new in news_ls:i += 1print(("\033[1;37m" + str(i) + "\033[0m").center(50,"*"))print("\033[1;36m" + new.get('title') + "\033[0m")news_length = len(news_ls)# news_ls.reverse()user_input = input("输入新闻编号获取进一步访问的超链接,输入q/Q退出,输入r/R刷新热榜:")if user_input == 'q' or user_input == 'Q':breakelif user_input == 'r' or user_input == 'R':continueelif user_input in [str(i) for i in range(1,news_length+1)]:news_index = eval(user_input) - 1print(news_ls[news_index].get('url'))print("\033[1;33m" + "按住Ctrl键,点击超链接进行访问" + "\033[0m")print('\033[5;31m'+'10s后自动刷新热榜'+'\033[0m')time.sleep(10)continueelse:print("Invalid User Input.")print('\033[5;31m'+"3s后自动刷新热榜"+'\033[0m')time.sleep(3)continueprint("Over,退出CSDN热搜!")

可以关注作者微信公众号,追踪更多有价值的内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux用户及用户组权限

一、用户和用户组 功能项命令实例作用用户组cat /etc/group查看当前系统存在的用户组groupadd testing添加一个新的用户组testingcat /etc/group查看组是否被新增成功groupmod -n test testing将testing重命名成testgroupdel test删除组testgroups root查看用户root所在的所有…

linux centos7中使用 Postfix 和Dovecot搭建邮件系统

作者主页:点击! Linux专栏:点击! Postfix Postfix是一个开源的邮件传输代理(MTA),用于路由和传送电子邮件。它是一个可靠、安全且高性能的邮件服务器软件,常用于搭建邮件系统的核心…

html音频和视频可输入表单input

音频和视频 loop循环播放autoplay自动播放controls显示控制面板<audio src""> //<video src"#">muted静音播放 可输入表单input password密码框 radio单选框 checkbox复选框 file上传文件 text文本框 文本框<input type"text"…

STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)

项目背景 本次的水墨屏幕项目需要做一个多级菜单的显示&#xff0c;所以写出来一起学习&#xff0c;本篇文章不单单适合于水墨屏&#xff0c;像0.96OLED屏幕也适用&#xff0c;区别就是修改显示函数。 设计思路 多级菜单的实现&#xff0c;一般有两种实现的方法 1.通过双向…

【ZigBee/ZStack快速入门】04-1-协议栈串口回调函数(接收数据)

弄了两天终于让我试出来了 参考了大佬的代码&#xff0c;大佬的代码只能存放64个数&#xff0c;但是我的需求要高一点&#xff0c;所以在大佬的基础上改了一下&#xff0c;先放上代码&#xff0c;后面再分析 void SampleApp_CallBack(uint8 port, uint8 event) {uint8 UART0_R…

云贝教育 |【技术文章】pg_bulkload介绍

注: 本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 pg_bulkload 是一个高性能的数据加载工具&#xff0c;专门为PostgreSQL数据库设计&#xff0c;用于大批量数据的快速导入。pg_bulk…

【MySQL】MySQL小结

MySQL数据库的基本信息 数据&#xff1a;记录事物的信息 表&#xff1a;数据的集合&#xff0c;由行和列组成&#xff1b;将多条数据组合在一起 数据库&#xff1a;是表的集合&#xff0c;是存储以统一格式且相互有关数据的仓库 DBMS的主要功能&#xff1a;1.数据库的建立和维…

JetPack之DataBinding基础使用

目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定&#xff0c;能大大减少绑定app逻辑…

【C语言】huffman编码实现数据压缩

目录 原理类型定义完整代码实验无重复数据的压缩情况有重复数据的压缩情况数据中只有一种字符的情况 原理 huffman统计数据中字符的出现次数&#xff0c;根据每个字符的出现次数来编码&#xff0c;出现次数越多的数据使用越短的编码长度&#xff0c;从而实现数据压缩的目的。 …

如何利用InternLM2的开源大型语言模型编写代码解释的agent

InternLM2作为一个开源的大型语言模型&#xff0c;具备了强大的编码能力和长文本处理能力&#xff0c;同时也在工具调用方面有所探索。要利用InternLM2编写代码解释的agent&#xff0c;可以依据文章中提及的“Tool-Augmented LLMs”部分进行设计。这部分探讨了如何通过特定的方…

南京观海微电子---Vitis HLS的工作机制——Vitis HLS教程

1. 前言 Vitis HLS&#xff08;原VivadoHLS&#xff09;是一个高级综合工具。用户可以通过该工具直接将C、 C编写的函数翻译成HDL硬件描述语言&#xff0c;最终再映射成FPGA内部的LUT、DSP资源以及RAM资源等。 用户通过Vitis HLS&#xff0c;使用C/C代码来开发RTL IP核&#x…

VSCode 如何同步显示网页在手机或者平板上

首先要确保 ①电脑上安装了VsCode ②VsCode安装插件LiveServer 安装成功之后 连续按住 Alt L 、Alt O 会跳转到对应的html页面上 http://127.0.0.1:5500/....... 是这个开头的 然后打开网络 如果桌面有网上邻居的可以直接点桌面的网上邻居 进来找到WLAN这个…

RabbitMQ安装及使用笔记

RabbitMQ安装及使用笔记 RabbitMQ是一个开源的消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c;用于在分布式系统中进行消息传递。 1.安装 利用docker load命令加载mq镜像 docker load -i mq.tar 基于Docker来安装RabbitMQ&#xff…

数据结构(四)顺序表与链表的深层次讲解

我们在数据结构&#xff08;二&#xff09;&#xff0c;对链表和顺序表已经讲解过了。但很多同学表示有点晦涩难懂那我就出一篇深层次讲解&#xff0c;一步一步来带领大家学习。 我们从头&#xff08;数据结构&#xff09;开始完整的来为大家讲解&#xff0c;大家好好看好好学。…

vue3.0开发手册(实用版)

vue3 .2看一遍就会的setup语法糖 起初vue3.0暴露变量必须return出来&#xff0c;template才能使用 vue3.2中&#xff0c;只需要在script标签上加上setup属性&#xff0c;组件在编译的过程中代码运行的上下文是在setup0函数中&#xff0c;无需retuen template 可之间使用 文件…

人工智能在产业中应用--生成智能

二、生成式人工智能 前面介绍了很多人工智能的应用&#xff0c;接下来部分我们会介绍当前正在进行的生成智能。生成智能和以往的人工智能有什么区别&#xff0c;个人觉得主要区别就在于“度”。在表现上就是以前的人工智能更多是利用既有的数据集分布挖掘和解决在这个数据集下…

Python人工智能:气象数据可视化的新工具

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

单片机原理及应用

单片机时钟电路及时序 时钟电路用于产生AT89S51单片机工作时所必需的时钟脉冲信号(工作频率)&#xff1b;AT89S51单片机的CPU正是在时钟脉冲信号的控制下&#xff0c;严格地按时序执行指令进行工作的。AT89S51单片机的最高时钟频率为33MHz。 时钟电路 AT89S51单片机常用的时…

文件披露,Facebook秘密项目中偷窥用户的Snapchat流量

2016年&#xff0c;Facebook启动了一个秘密项目&#xff0c;旨在拦截并解密人们使用Snapchat应用程序及其服务器之间的网络流量。根据新近公开的法庭文件&#xff0c;该项目的目标是了解用户的行为&#xff0c;并帮助Facebook与Snapchat竞争。Facebook将此称为“鬼busters项目”…

Snowflake 时钟回拨问题 解决方案

Snowflake是一种分布式数据存储和计算服务&#xff0c;它使用一种特殊的ID生成策略来确保在分布式系统中生成唯一的ID。这种策略通常被称为Snowflake算法&#xff0c;它由Twitter开发用于生成64位的唯一ID&#xff0c;并且在多个系统和服务中被广泛采用。 Snowflake算法生成的…