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

本文介绍我用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.通过双向…

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

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

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;从而实现数据压缩的目的。 …

南京观海微电子---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;大家好好看好好学。…

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

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

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

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

单片机原理及应用

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

学习或复习电路的game推荐:nandgame(NAND与非门游戏)、Turing_Complete(图灵完备)、logisim工具

https://www.nandgame.com/ 免费 https://store.steampowered.com/app/1444480/Turing_Complete/ 收费&#xff0c;70元。据说可以导出 Verilog &#xff01; logisim及其衍生版本 都需要安装java环境。 http://www.cburch.com/logisim/ 是原版&#xff0c; 下载页面&#…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

垃圾回收机制--GC 垃圾收集器--JVM调优-面试题

1.触发垃圾回收的条件 新生代 Eden区域满了&#xff0c;触发young gc (ygc)老年代区域满了&#xff0c;触发full gc (fgc)通过ygc后进入老年代的平均大小大于老年代的可用内存,触发full gc(fgc).程序中主动调用的System.gc()强制执行gc,是full gc&#xff0c;但是不必然执行。…

蓝桥杯(3):python搜索DFS

目录 1 DFS简介 1.1 DFS与n重循环 1.2 代码实现 1.3 例题 1.3.1 分糖果 1.3.2 买瓜 2 回溯 2.1 定义 2.2 代码实例 2.1.1 排列数 2.1.2 找子集 2.3 例题 2.3.1 N皇后 2.3.2 小朋友崇拜圈 2.3.3 全球变暖 3 剪枝 3.1 定义 3.2 分类 3.3 例子 3.3.1 数字王国之…

自动化测试:Selenium中的时间等待

在 Selenium 中&#xff0c;时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待&#xff0c;包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见&…

javaWeb项目-火车票订票信息系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Spring Boot框架 …