欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具

 更新時(shí)間:2023年05月11日 08:28:13   作者:極客飛虎  
這篇文章主要為大家詳細(xì)介紹了如何基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具,都是一些基礎(chǔ)的應(yīng)用,文中的示例代碼講解詳細(xì),感興趣的可以了解一下

 前言

今天,我無(wú)聊的時(shí)候做了一個(gè)搜索文章的軟件,有沒(méi)有更加的方便快捷不知道,好玩就行了?;赑ython tkinter 制作文章搜索軟件,都是一些基礎(chǔ)的應(yīng)用。

功能實(shí)現(xiàn)

導(dǎo)入模塊

代碼

我們首先做到第一件事是導(dǎo)入模塊。

import tkinter as tk
import webbrowser
from tkinter import ttk
import requests

創(chuàng)建窗口

代碼

root = tk.Tk()
root.title('CSDN問(wèn)題搜索')
root.geometry('1000x700+100+100')
root.iconbitmap('search.ico')
root.mainloop()

這段代碼創(chuàng)建了一個(gè)名為root的Tkinter窗口對(duì)象,并設(shè)置了窗口的標(biāo)題和大小。然后,它使用root.iconbitmap()方法將一個(gè)名為search.ico的圖標(biāo)圖像設(shè)置為窗口的圖標(biāo)。

root.geometry()方法用于設(shè)置窗口的位置和大小,它接受一個(gè)參數(shù),即窗口的位置和大小。在這個(gè)例子中,我們將窗口的位置設(shè)置為(1000, 700)并將大小設(shè)置為(100, 100)

效果

背景圖片

代碼

img = tk.PhotoImage(file='benjing.png')
tk.Label(root, image=img).pack()

這行代碼創(chuàng)建了一個(gè)名為img的PhotoImage對(duì)象,并將其設(shè)置為根窗口對(duì)象root的圖像。然后,它使用tk.Label創(chuàng)建一個(gè)標(biāo)簽對(duì)象,并將圖像設(shè)置為該標(biāo)簽的圖像。最后,它使用pack()方法將標(biāo)簽對(duì)象放置在根窗口對(duì)象中。

效果

搜索文本框 

代碼

search_frame = tk.Frame(root)
search_frame.pack(pady=12)
# 創(chuàng)建一個(gè)字符串變量
search_va = tk.StringVar()
tk.Label(search_frame, text='CSDN搜索', font=('黑體', 12)).pack(side=tk.LEFT, padx=6)
tk.Entry(search_frame, relief='flat', width=30, textvariable=search_va).pack(side=tk.LEFT, padx=5, fill='both')
tk.Button(search_frame, text='C一下', font=('黑體', 12), relief='flat', bg='#fe6b00').pack(side=tk.LEFT, padx=5)

這段代碼創(chuàng)建了一個(gè)名為search_frame的Tkinter窗口對(duì)象,并將其放置在根窗口對(duì)象root中。然后,它創(chuàng)建了一個(gè)StringVar對(duì)象search_va,并將其設(shè)置為一個(gè)字符串變量。接下來(lái),它創(chuàng)建了一個(gè)Label對(duì)象tk.Label,并將其放置在search_frame中。tk.Label對(duì)象具有一個(gè)文本屬性和一個(gè)字體屬性,這里使用了一個(gè)黑體字體和12號(hào)字號(hào)。tk.Entry對(duì)象具有一個(gè)文本屬性和一個(gè)寬度屬性,這里使用了一個(gè)30像素的寬度和一個(gè)StringVar對(duì)象search_va。最后,它創(chuàng)建了一個(gè)Button對(duì)象tk.Button,并將其放置在search_frame中。tk.Button對(duì)象具有一個(gè)文本屬性、一個(gè)字體屬性和一個(gè)背景屬性,這里使用了一個(gè)黑體字體、12號(hào)字號(hào)和一個(gè)背景顏色為#fe6b00。

效果

內(nèi)容顯示界面

代碼

tree_view = ttk.Treeview(root,show="headings", columns=('num', 'title', 'author', 'date', 'link'))
tree_view.column("num", width=10, anchor='center')
tree_view.column('title', width=200, anchor='w')
tree_view.column('author', width=10, anchor='center')
tree_view.column('date', width=10, anchor='center')
tree_view.column('link', width=150, anchor='center')
tree_view.heading('num', text='序號(hào)')
tree_view.heading('title', text='標(biāo)題')
tree_view.heading('author', text='作者')
tree_view.heading('date', text='發(fā)布時(shí)間')
tree_view.heading('link', text='鏈接')
tree_view.pack(fill=tk.BOTH, expand=False, pady=10)

這段代碼創(chuàng)建了一個(gè)名為tree_view的Tkinter Treeview對(duì)象,并將根節(jié)點(diǎn)設(shè)置為root。show參數(shù)設(shè)置為"headings",表示顯示節(jié)點(diǎn)的標(biāo)題。columns參數(shù)設(shè)置為一個(gè)包含節(jié)點(diǎn)標(biāo)題、作者、發(fā)布時(shí)間和鏈接的列表。tree_view.column()方法用于設(shè)置每個(gè)列的寬度和錨點(diǎn)。tree_view.column()方法接受一個(gè)參數(shù),即要設(shè)置寬度和錨點(diǎn)的列的名稱。tree_view.heading()方法用于設(shè)置每個(gè)列的標(biāo)題。tree_view.pack()方法用于設(shè)置節(jié)點(diǎn)的位置和大小,并將節(jié)點(diǎn)放置在根窗口對(duì)象中。tree_view.fill參數(shù)設(shè)置為"both",表示填充整個(gè)窗口,expand參數(shù)設(shè)置為True,表示展開(kāi)節(jié)點(diǎn),pady參數(shù)設(shè)置為10,表示節(jié)點(diǎn)之間的間距。

效果

搜索內(nèi)容效果代碼

到了這里,我們這個(gè)框架就寫(xiě)好了,那么,我們?nèi)绾潍@取搜索功能呢。、

def search(word):
    search_list = []
    num = 1
    for page in range(1, 3):
        url = 'https://so.csdn.net/api/v3/search'
        data = {
            'q': word,
            'p': page,
        }
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
        }
        response = requests.get(url=url, params=data, headers=headers)
        for index in response.json()['result_vos']:
            title = index["title"].replace('<em>', '').replace('</em>', '')
            author = index["nickname"].replace('<em>', '').replace('</em>', '')
            dit = {
                'num': num,
                'title': title,
                'author': author,
                'date': index['create_time_str'],
                'link': index['url'],
            }
            num += 1
            search_list.append(dit)
    return search_list

這段代碼定義了一個(gè)名為search的函數(shù),該函數(shù)接受一個(gè)字符串參數(shù)word,并返回一個(gè)字符串列表,其中包含符合給定字符串的所有文檔的標(biāo)題、作者和發(fā)布時(shí)間。

該函數(shù)首先創(chuàng)建一個(gè)空字符串列表search_list,然后使用一個(gè)循環(huán)來(lái)搜索所有可能的頁(yè)面。在每個(gè)頁(yè)面上,它使用requests庫(kù)發(fā)送一個(gè)HTTP GET請(qǐng)求,并將搜索參數(shù)作為請(qǐng)求的一部分傳遞。然后,它將響應(yīng)的JSON數(shù)據(jù)解析為一個(gè)字典,其中包含每個(gè)文檔的標(biāo)題、作者和發(fā)布時(shí)間。然后,它將每個(gè)字典添加到search_list中,并將搜索列表的長(zhǎng)度增加1。

最后,該函數(shù)返回search_list,該列表包含符合給定字符串的所有文檔的標(biāo)題、作者和發(fā)布時(shí)間。

效果

比如講,搜索博主“愛(ài)吃餅干的小白鼠”,我們看看網(wǎng)站反饋的數(shù)據(jù)是不是和我們一樣的。

展示內(nèi)容效果代碼

接下來(lái),我們就要把上面的內(nèi)容展示到界面里面。

def show(search_list):
    # 往樹(shù)狀圖中插入數(shù)據(jù)
    for index, li in enumerate(search_list):
        tree_view.insert('', index + 1,values=(li['num'], li['title'], li['author'], li['date'], li['link']))

這段代碼定義了一個(gè)名為show的函數(shù),該函數(shù)接受一個(gè)字符串列表參數(shù)search_list,該列表包含每個(gè)文檔的標(biāo)題、作者和發(fā)布時(shí)間,用于插入樹(shù)狀圖中。

該函數(shù)首先使用一個(gè)循環(huán)來(lái)遍歷search_list,并使用tree_view.insert()方法將每個(gè)文檔插入到樹(shù)狀圖中。tree_view.insert()方法接受一個(gè)參數(shù),即要插入的節(jié)點(diǎn)的索引和值列表。values參數(shù)用于指定節(jié)點(diǎn)的值列表。

點(diǎn)擊搜索功能代碼

上面我們講述了搜索功能代碼,以及展示代碼。接下來(lái),我們就要實(shí)現(xiàn)這樣的功能——我們?cè)谖谋究蜉斎?ldquo;愛(ài)吃餅干的小白鼠”,然后,我們點(diǎn)擊C一下,就會(huì)在界面顯示內(nèi)容。

(PS—如果大家感興趣,可以實(shí)現(xiàn)一個(gè)回車(chē)的功能)

def click():
    key_word = search_va.get()
    if key_word:
        search_list = search(word=key_word)
        show(search_list)

這段代碼定義了一個(gè)名為click的函數(shù),該函數(shù)用于查找鍵盤(pán)上輸入的字符串。如果找到了相應(yīng)的字符串,則調(diào)用search()函數(shù)查找包含該字符串的文檔并顯示它們。get()方法用于從緩沖區(qū)中獲取字符串。if key_word語(yǔ)句檢查輸入字符串是否包含在search_va中,如果是,則將search_list更新為包含相關(guān)文檔的字符串列表。然后調(diào)用show()函數(shù)將其顯示在樹(shù)狀圖中。

效果

訪問(wèn)博客網(wǎng)頁(yè)

我們接下來(lái),就實(shí)現(xiàn)點(diǎn)擊某一行就會(huì)訪問(wèn)該文章。

def tree_view_click():
    for item in tree_view.selection():
        item_text = tree_view.item(item, "values")
        webbrowser.open(item_text[-1])

這段代碼定義了一個(gè)名為tree_view_click的函數(shù),該函數(shù)用于在樹(shù)狀圖中選擇節(jié)點(diǎn)并打開(kāi)相應(yīng)的網(wǎng)頁(yè)。它使用tree_view.selection()方法獲取選中的節(jié)點(diǎn),并使用tree_view.item()方法獲取節(jié)點(diǎn)的文本值。然后,它使用webbrowser.open()方法打開(kāi)相應(yīng)的網(wǎng)頁(yè)。

tree_view.bind("<Button-1>",tree_view_click)

在 Python 中,可以使用 tkinter 模塊中的 ttk 子模塊來(lái)創(chuàng)建樹(shù)形視圖控件。要為樹(shù)形視圖添加點(diǎn)擊函數(shù),可以使用 ttk.Treeview 的 __init__ 方法來(lái)設(shè)置點(diǎn)擊事件處理函數(shù)。

到此這篇關(guān)于基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具的文章就介紹到這了,更多相關(guān)Python文章搜索工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Python的線程來(lái)解決生產(chǎn)者消費(fèi)問(wèn)題的示例

    用Python的線程來(lái)解決生產(chǎn)者消費(fèi)問(wèn)題的示例

    這篇文章主要介紹了用Python的線程來(lái)解決生產(chǎn)者消費(fèi)問(wèn)題的示例,包括對(duì)使用線程中容易出現(xiàn)的一些問(wèn)題給出了相關(guān)解答,需要的朋友可以參考下
    2015-04-04
  • Pytorch搭建SRGAN平臺(tái)提升圖片超分辨率

    Pytorch搭建SRGAN平臺(tái)提升圖片超分辨率

    這篇文章主要為大家介紹了Pytorch搭建SRGAN平臺(tái)提升圖片超分辨率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 3種適用于Python的瘋狂秘密武器及原因解析

    3種適用于Python的瘋狂秘密武器及原因解析

    這篇文章主要介紹了3種適用于Python的瘋狂秘密武器,本文給大家分享問(wèn)題原因解析,通過(guò)實(shí)例代碼圖文的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python報(bào)錯(cuò):ModuleNotFoundError的解決辦法

    Python報(bào)錯(cuò):ModuleNotFoundError的解決辦法

    "ModuleNotFoundError: No module named 'xxx'"這個(gè)報(bào)錯(cuò)是個(gè)非常常見(jiàn)的報(bào)錯(cuò),幾乎每個(gè)python程序員都遇到過(guò),下面這篇文章主要給大家介紹了關(guān)于Python報(bào):ModuleNotFoundError錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2022-06-06
  • linux 下實(shí)現(xiàn)python多版本安裝實(shí)踐

    linux 下實(shí)現(xiàn)python多版本安裝實(shí)踐

    這篇文章主要介紹了linux 下實(shí)現(xiàn)python多版本安裝實(shí)踐,需要的朋友可以參考下
    2014-11-11
  • 詳解pyinstaller selenium python3 chrome打包問(wèn)題

    詳解pyinstaller selenium python3 chrome打包問(wèn)題

    這篇文章主要介紹了詳解pyinstaller selenium python3 chrome打包問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python vtk讀取并顯示dicom文件示例

    Python vtk讀取并顯示dicom文件示例

    今天小編就為大家分享一篇Python vtk讀取并顯示dicom文件示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • python創(chuàng)建和刪除目錄的方法

    python創(chuàng)建和刪除目錄的方法

    這篇文章主要介紹了python創(chuàng)建和刪除目錄的方法,涉及Python操作目錄的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究

    Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究

    在Python中,urllib庫(kù)是一個(gè)強(qiáng)大的模塊,用于處理URLs,它包含了多個(gè)子模塊,其中urllib.request是用于發(fā)出HTTP請(qǐng)求的核心組件,本文將深入探討urllib的基本使用、高級(jí)功能以及一些實(shí)際場(chǎng)景的示例,方便更全面地了解這個(gè)重要的網(wǎng)絡(luò)請(qǐng)求工具
    2024-01-01
  • 利用python批量爬取百度任意類別的圖片的實(shí)現(xiàn)方法

    利用python批量爬取百度任意類別的圖片的實(shí)現(xiàn)方法

    這篇文章主要介紹了利用python批量爬取百度任意類別的圖片的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論