博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫——自制简单搜索引擎GUI版
阅读量:7058 次
发布时间:2019-06-28

本文共 4230 字,大约阅读时间需要 14 分钟。

  在中,笔者已经介绍了如何利用Python爬虫来制作一个简单的搜索引擎。我们将继续这个工作,来建立一个该搜索引擎的GUI版本,来获得更好地搜索体验。

  主要程序还是中的搜索程序,在此基础上加入UI设计,得到图形化操作界面。
  直接上程序!

def introduction(self,citiao): # 詞條的百度百科簡介部分函數        url =  'https://baike.baidu.com/item/'+urllib.parse.quote(citiao)        # 讀取網頁        html = urllib.request.urlopen(url)          content = html.read().decode('utf-8')        html.close()        #網頁解析        soup = BeautifulSoup(content, "lxml")          text = soup.find('div', class_="lemma-summary").children #簡介部分        intro_text=''        #文本處理,主要利用正則表達式        for x in text:            word = re.sub(re.compile(r"<(.+?)>"),'',str(x))            words = re.sub(re.compile(r"\[(.+?)\]"),'',word)            intro_text += words        return intro_text # 返回文本(str格式)

  该段代码与上一篇分享类似,就不在具体讲述,主要功能为:输入参数为citiao,得到该词条的百度百科的简介部分的文字。

def intro_final(self,citiao): # 異常處理函數        try:            return self.introduction(citiao)        except AttributeError:            return "请再输入详细点,亲~~"

  intro_final()为异常处理函数,如果introduction()函数没有搜索到结果,则提示输入详细点,因为某个词条可能存在多义词。

def initUI(self):        #GUI布局及控件放置        search_label = QLabel("请输入搜索词条:")        search_item = QLineEdit()        btn1 = QPushButton("开始搜索", self)        btn2 = QPushButton("清空", self)        search_result = QTextEdit()        grid = QGridLayout()        grid.setSpacing(5)        grid.addWidget(search_label, 1, 0)        grid.addWidget(search_item,2, 0)        grid.addWidget(btn1, 3, 0)        grid.addWidget(btn2, 3, 1)        grid.addWidget(search_result, 4, 0, 5, 0)        self.setLayout(grid)        #爲兩個按鈕關聯處理函數,當按下“開始搜索”按鈕開始開搜並輸出,當按下“清空”清空內容        def searching():            search_result.setText(self.intro_final(search_item.text()))        btn1.clicked.connect(searching)        def clear():            search_result.setText("")            search_item.setText("")        btn2.clicked.connect(clear)        #設置窗口        self.setGeometry(400, 150, 600, 500)        self.setWindowTitle("搜索引擎GUI")

  该段代码主要是利用PyQt5模块来设计GUI界面,图形化界面如下:

  搜索GUI
  接下来是欢乐的测试时间~~
  搜索GUI1
  搜索GUI2
  搜索GUI3
  搜索GUI4


  本次分享主要是上一次分享的优化,得到GUI界面,便于用户操作。如有不足之处,还请批评指正~~
  附上全部源程序: 

# -*- coding: utf-8 -*-import sysimport reimport bs4import urllib.request  from bs4 import BeautifulSoup import urllib.parsefrom PyQt5.QtWidgets import (QPushButton,QWidget, QLabel, QLineEdit, QTextEdit, QGridLayout,QApplication)class Example(QWidget):     def __init__(self): # 初始化        super().__init__()        self.initUI()    def introduction(self,citiao): # 詞條的百度百科簡介部分函數        url = 'https://baike.baidu.com/item/'+urllib.parse.quote(citiao)        # 讀取網頁        html = urllib.request.urlopen(url)          content = html.read().decode('utf-8')        html.close()        #網頁解析        soup = BeautifulSoup(content, "lxml")          text = soup.find('div', class_="lemma-summary").children #簡介部分        intro_text=''        #文本處理,主要利用正則表達式        for x in text:            word = re.sub(re.compile(r"<(.+?)>"),'',str(x))            words = re.sub(re.compile(r"\[(.+?)\]"),'',word)            intro_text += words        return intro_text # 返回文本(str格式)    def intro_final(self,citiao): # 異常處理函數        try:            return self.introduction(citiao)        except AttributeError:            return "请再输入详细点,亲~~"    def initUI(self):        #GUI布局及控件放置        search_label = QLabel("请输入搜索词条:")        search_item = QLineEdit()        btn1 = QPushButton("开始搜索", self)        btn2 = QPushButton("清空", self)        search_result = QTextEdit()        grid = QGridLayout()        grid.setSpacing(5)        grid.addWidget(search_label, 1, 0)        grid.addWidget(search_item,2, 0)        grid.addWidget(btn1, 3, 0)        grid.addWidget(btn2, 3, 1)        grid.addWidget(search_result, 4, 0, 5, 0)        self.setLayout(grid)        #爲兩個按鈕關聯處理函數,當按下“開始搜索”按鈕開始開搜並輸出,當按下“清空”清空內容        def searching():            search_result.setText(self.intro_final(search_item.text()))        btn1.clicked.connect(searching)        def clear():            search_result.setText("")            search_item.setText("")        btn2.clicked.connect(clear)        #設置窗口        self.setGeometry(400, 150, 600, 500)        self.setWindowTitle("搜索引擎GUI")if __name__ == "__main__":    app = QApplication(sys.argv)    ex = Example()    ex.show()    sys.exit(app.exec_())
你可能感兴趣的文章
关于人肉神话:真理、智能、哲学的态度及逻辑的来源
查看>>
oracle错误码异常处理
查看>>
NUAGENETWORKS第二代SDN方案推企业云服务
查看>>
PlayFramework1.2.4 一些使用中的记录(前言)
查看>>
redis2.6安装报错解决
查看>>
【资料整理】对linux内存的理解
查看>>
几个查看系统状态的工具简介
查看>>
C# 基础知识系列文章索引
查看>>
深度解析数据库透明加密(一)
查看>>
解决xp下无法通过windows installer服务安装此安装程序包
查看>>
OpenGL常犯错误记录
查看>>
sqlite数据转移到mysqlserver
查看>>
zoj3501
查看>>
iphone4体验ios7系统
查看>>
在龙芯平台上安装钉钉
查看>>
Jenkins+Docker的自动化CI/CD实践
查看>>
文本处理工具汇总
查看>>
php基础学习
查看>>
ActiveMQ(24):高级特性之Slow Consumer Handling(慢消费者的处理)
查看>>
C# 语法练习(1): 基本数据类型
查看>>