爬取热榜数据,通过Qt界面显示,代码可直接运行(python3经典编程案例)
代码如下:
# -*- encoding: utf-8 -*-
import sys
from lxml import etree
from requests import get
from PyQt5 import QtCore, QtGui, QtWidgetsHEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}class Ui_WinMain(object):def __init__(self):self.all_url = {'微博热搜...': 'https://tophub.today/n/KqndgxeLl9','抖音热搜...': 'https://tophub.today/n/K7GdaMgdQy','百度实时热点...': 'https://tophub.today/n/Jb0vmloB1G','知乎热榜...': 'https://tophub.today/n/mproPpoq6O','虎嗅热文...': 'https://tophub.today/n/5VaobgvAj1','哔哩哔哩全站排行...': 'https://tophub.today/n/74KvxwokxM','豆瓣新片...': 'https://tophub.today/n/mDOvnyBoEB'}def spider(self, hot_url):self.textBrowser.clear()response = get(url=hot_url, headers=HEADERS)html = etree.HTML(response.content.decode('utf-8'))for oes_title in range(1, 11):try:title = html.xpath(f'//*[@id="page"]/div[2]/div[2]/div[1]/div[2]/div/div[1]/table/tbody/tr[{oes_title}]/td[2]/a//text()')[0]hot_index = html.xpath(f'//*[@id="page"]/div[2]/div[2]/div[1]/div[2]/div/div[1]/table/tbody/tr[{oes_title}]/td[3]//text()')[0]short_title_url = html.xpath(f'//*[@id="page"]/div[2]/div[2]/div[1]/div[2]/div/div[1]/table/tbody/tr[{oes_title}]/td[2]/a//@href')[0]title_url = 'https://tophub.today' + short_title_urlprint(f' {hot_index} | {title} {title_url}')mt_txt = f' {hot_index} | {title} \n'self.textBrowser.append(mt_txt)except Exception as e:print(f'出现异常:{e}')def setupUi(self, WinMain):WinMain.setObjectName("WinMain")WinMain.setWindowModality(QtCore.Qt.WindowModal)WinMain.setEnabled(True)WinMain.resize(660, 700)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(WinMain.sizePolicy().hasHeightForWidth())WinMain.setSizePolicy(sizePolicy)WinMain.setMaximumSize(QtCore.QSize(660, 700))palette = QtGui.QPalette()brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)brush = QtGui.QBrush(QtGui.QColor(255, 170, 127))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)brush = QtGui.QBrush(QtGui.QColor(255, 170, 127))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)brush = QtGui.QBrush(QtGui.QColor(255, 170, 127))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)brush = QtGui.QBrush(QtGui.QColor(255, 170, 127))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)WinMain.setPalette(palette)font = QtGui.QFont()font.setPointSize(16)WinMain.setFont(font)WinMain.setLayoutDirection(QtCore.Qt.LeftToRight)self.textBrowser = QtWidgets.QTextBrowser(WinMain)self.textBrowser.setEnabled(True)self.textBrowser.setGeometry(QtCore.QRect(10, 60, 641, 631))self.textBrowser.setMaximumSize(QtCore.QSize(660, 666))font = QtGui.QFont()font.setFamily("华文中宋")font.setPointSize(18)font.setBold(False)font.setWeight(50)self.textBrowser.setFont(font)self.textBrowser.setLayoutDirection(QtCore.Qt.LeftToRight)self.textBrowser.setAutoFillBackground(True)self.textBrowser.setFrameShape(QtWidgets.QFrame.NoFrame)self.textBrowser.setFrameShadow(QtWidgets.QFrame.Sunken)self.textBrowser.setTabStopWidth(200)self.textBrowser.setObjectName("textBrowser")self.comboBox = QtWidgets.QComboBox(WinMain)self.comboBox.setGeometry(QtCore.QRect(120, 10, 240, 40))self.comboBox.setMaximumSize(QtCore.QSize(320, 40))font = QtGui.QFont()font.setFamily("华文中宋")font.setPointSize(18)self.comboBox.setFont(font)self.comboBox.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))self.comboBox.setMouseTracking(False)self.comboBox.setFocusPolicy(QtCore.Qt.StrongFocus)self.comboBox.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)self.comboBox.setLayoutDirection(QtCore.Qt.LeftToRight)self.comboBox.setAutoFillBackground(False)self.comboBox.setEditable(False)self.comboBox.setMaxCount(20)self.comboBox.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically)self.comboBox.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContentsOnFirstShow)self.comboBox.setDuplicatesEnabled(False)self.comboBox.setFrame(False)self.comboBox.setModelColumn(0)self.comboBox.setObjectName("comboBox")self.label = QtWidgets.QLabel(WinMain)self.label.setGeometry(QtCore.QRect(10, 10, 101, 41))font = QtGui.QFont()font.setFamily("楷体")font.setPointSize(20)font.setBold(True)font.setWeight(75)font.setStyleStrategy(QtGui.QFont.PreferAntialias)self.label.setFont(font)self.label.setObjectName("label")self.pushButton = QtWidgets.QPushButton(WinMain)self.pushButton.setGeometry(QtCore.QRect(490, 10, 110, 40))self.pushButton.setMinimumSize(QtCore.QSize(110, 0))self.pushButton.setMaximumSize(QtCore.QSize(110, 40))palette = QtGui.QPalette()brush = QtGui.QBrush(QtGui.QColor(255, 170, 0))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)brush = QtGui.QBrush(QtGui.QColor(85, 170, 0))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)brush = QtGui.QBrush(QtGui.QColor(255, 170, 0))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)brush = QtGui.QBrush(QtGui.QColor(85, 170, 0))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)brush = QtGui.QBrush(QtGui.QColor(255, 170, 0))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))brush.setStyle(QtCore.Qt.SolidPattern)palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)self.pushButton.setPalette(palette)font = QtGui.QFont()font.setFamily("Segoe Script")font.setPointSize(24)font.setItalic(False)font.setUnderline(False)self.pushButton.setFont(font)self.pushButton.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))self.pushButton.setFocusPolicy(QtCore.Qt.WheelFocus)self.pushButton.setAutoRepeat(False)self.pushButton.setAutoExclusive(False)self.pushButton.setAutoDefault(False)self.pushButton.setFlat(True)self.pushButton.setObjectName("pushButton")self.retranslateUi(WinMain)self.comboBox.setCurrentIndex(-1)QtCore.QMetaObject.connectSlotsByName(WinMain)def retranslateUi(self, WinMain):_translate = QtCore.QCoreApplication.translateWinMain.setWindowTitle(_translate("WinMain", "Today Hot"))self.textBrowser.setHtml(_translate("WinMain","<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n""<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n""p, li { white-space: pre-wrap; }\n""</style></head><body style=\" font-family:\'华文新魏\'; font-size:16pt; font-weight:400; font-style:normal;\">\n""<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'SimSun\';\"><br /></p></body></html>"))self.label.setText(_translate("WinMain", "获取源:"))self.pushButton.setText(_translate("WinMain", "→ 进入"))def main_posh(self):self.pushButton.clicked.connect(self.post_url)def add_url_box(self):for hot_url_ in self.all_url:self.comboBox.addItem(hot_url_)def post_url(self):hot_title = self.comboBox.currentText()title_url = self.all_url[hot_title]self.spider(hot_url=title_url)def open_html():app = QtWidgets.QApplication(sys.argv)WinMain = QtWidgets.QWidget()ui = Ui_WinMain()ui.setupUi(WinMain)ui.add_url_box()ui.main_posh()ui.post_url()WinMain.show()sys.exit(app.exec_())if __name__ == "__main__":open_html()
爬取热榜数据,通过Qt界面显示,代码可直接运行(python3经典编程案例)相关推荐
- Python爬取热搜数据之炫酷可视化
可视化展示 看完记得点个赞哟 炫酷可视化音乐组合版来了! 项目介绍 背景 现阶段.抖音.快手.哗哩哗哩.微信公众号已经成为不少年轻人必备的"生活神器".在21世纪的今天,你又是如何 ...
- 爬取热榜2k图片,爬虫入门即可
一:作品预览 二:图片示例 三:知己知彼(剖析网页并保存到本地) 1.我们的目标网址是一个非常好的2k图片网站:https://wallhaven.cc/ 2.我们的目标是它的热榜图片:## 3.点击 ...
- 关于Python爬取热搜的另一种方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.BeautifulSoup是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 本文主要介绍使用Beaut ...
- 对爬虫爬取到的数据进行存储
已写章节 第一章 网络爬虫入门 第二章 基本库的使用 第三章 解析库的使用 第四章 数据存储 第五章 动态网页的抓取 文章目录 已写章节 第四章 数据存储 4.1 文件存储 4.1.1 TXT文件存储 ...
- 以某乎为实战案例,教你用Python爬取手机App数据
1 前言 最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数 ...
- 教你用Python爬取手机App数据!居然有人说爬不了APP
最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据! 2. ...
- 1行代码爬CSDN热榜,Python哈啤酒式写法
橡皮擦,一个逗趣的互联网高级网虫 项目背景 群友:擦姐,CSDN 热榜数据最少能用几行代码爬取? 擦姐:估计 10 行吧. 群友:oh baby,show me your code! 项目的需求就是这 ...
- 用 Python 爬取 4332 条数据,揭秘甜咸肉粽的江湖!
作者 | 朱小五 责编 | 屠敏 来源 | 凹凸数据 端午节快要到了,甜咸粽子之争也快要拉开帷幕. 本文准备用Python爬取淘宝上的粽子数据并进行分析,看看有什么发现. 注:本文仅用于学习交流,禁止 ...
- python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...
主体数据来源是全国工商信用网但是每个省的工商系统都不同,要针对每个省的工商系统单独写爬虫每个省的验证码也不同,也要单独做.企查查的原理不是主动爬去数据,而是有人查询该企业时,如果自己的数据库没有该企业 ...
最新文章
- 杠上Spark、Flink?Kafka为何转型流数据平台
- Java中使用递归算法实现子级架构的查询
- 【解题报告】Leecode 643. 子数组最大平均数 I——Leecode 刷题系列
- idea集成Activiti Designer插件
- php实现小说字典功能_PHP实现生成数据字典功能示例
- 你应该学习的 20 个 Python 代码段
- 通用模块 -- Dubbo 用户模块
- linux 退出java,linux kill命令下如何优雅的退出java程序
- TextView属性总结,简单的控件也可以很复杂
- C#百度OCR本地图片识别文字
- pdf 转图片 php,php如何实现pdf转换成图片
- [干货分享]硬件测试快速入门你必须了解的知识!
- OSChina 周二乱弹 —— 掏心掏肺又掏钱,最终娶了个潘金莲
- 有哪些不错的家装风格?极家整装怎么样
- CORBA协议相关的概念
- 博客项目学习笔记十二:登录注册功能(登录)
- Qt纯代码实现菜单栏、工具栏、状态栏
- Robomaster:大风车识别可视化(记录一下)
- U3D-3D MAX Biped导出.fbx到Unity的Humanoid的骨架不匹配(Disable Triangle Pelvis, Enable Triangle Neck)
- 苹果a10处理器_苹果“芯”基建简史:自己掌握不了核心技术 乔布斯也得干着急...
热门文章
- 设计测试用例的万能公式 + 6大具体方法 = 面试就像聊天?
- 自定义的毛玻璃效果,高斯模糊
- HHUOJ 1887 班级聚会上的游戏
- yahoo雅虎邮箱开通直邮(pop)功能
- 汇承金融科技:开创多渠道资产与资金撮合融资服务模式
- 苹果人机交互指南_苹果人机界面设计指南的10个见解
- 如何在 3dMax 中制作游戏中的战斧模型?
- 【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器
- csdn没积分如何获取
- java.net.SocketException和错误:org.apache.ftpserver.FtpServerConfigurationException