溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Python怎么實(shí)現(xiàn)一個(gè)索引排序功能

發(fā)布時(shí)間:2021-04-14 15:35:22 來源:億速云 閱讀:282 作者:Leah 欄目:開發(fā)技術(shù)

使用Python怎么實(shí)現(xiàn)一個(gè)索引排序功能?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

import requests
import re

def News_Spider():#定義一個(gè)爬蟲
    url = 'https://news.sina.com.cn/'#url地址,新浪新聞
    headers = {#請(qǐng)求頭
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    response = requests.get(url,headers,verify=False)#針對(duì)https,采用verify=False
    response.encoding='utf-8'#編碼方式
    html = response.text#獲取頁面源代碼
    #print(html)#打印源代碼
    reg = 'target="_blank">(.*?)</a>'#設(shè)置規(guī)則
    content = re.findall(reg,html)#從頁面源代碼中篩選
    ls = []#定義一個(gè)空列表
    for c in content:
        if '<' in c:
            continue
        else:
            if len(c) > 6 and '客戶端' not in c:
                #print(c)
                ls.append(c)
            else:
                continue
    docu_set = {}#定義一個(gè)字典
    for l in range(len(ls)):
        docu_set['d{}'.format(l+1)] = ls[l]#格式化方法,從1開始
    return docu_set

def change_set():
    all_words = []#定義一個(gè)空列表用于存儲(chǔ)
    docu_set = News_Spider()
    for i in docu_set.values():
        cut = i.split()#分詞
        all_words.extend(cut)#添加分詞
    set_all_words = set(all_words)
    return set_all_words
    #print(set_all_words)

def reverse_index():
    invert_index = dict()#定義空字典
    set_all_words = change_set()#將返回值傳遞給變量
    docu_set = News_Spider()
    for b in set_all_words:
        temp = []
        for k in docu_set.keys():
            field = docu_set[k]
            split_field = field.split()
            if b in split_field:
                temp.append(k)
        invert_index[b] = temp
    print(invert_index)
    return invert_index

def Select():
    docu_set = News_Spider()
    invert_index = reverse_index()
    news = []
    # for i in invert_index:
    #     print(invert_index[i])
    while True:
        Find = str(input('請(qǐng)輸入查找內(nèi)容:'))
        if Find == '不查了':
            break
        for Contetnt in invert_index:#循環(huán)每一個(gè)鍵
            if Find in Contetnt:#如果輸入在鍵的字符串中
                Result = invert_index[Contetnt]#循環(huán)出字典中每一個(gè)對(duì)應(yīng)的值
                #print(Result)
                for r in Result:#循環(huán)每一個(gè)值
                    if r in docu_set.keys():#如果值在字典中
                        news.append(docu_set[r])#列表增加字典docu_set的值
                        print(docu_set[r])#打印輸出字典的值
                    else:
                        continue
            else:
                if Find not in Contetnt:
                    news.append('很抱歉,沒有找到更多內(nèi)容??!')
        #news = set(news)
        for n in news:
            if '很抱歉' in n:
                print(n)
                break
            else:
                print(n)

def main_function():#定義一個(gè)主方法
    News_Spider()
    change_set()
    reverse_index()
    Select()

if __name__ == '__main__':#程序入口
    main_function()

運(yùn)行結(jié)果如下圖:

使用Python怎么實(shí)現(xiàn)一個(gè)索引排序功能
使用Python怎么實(shí)現(xiàn)一個(gè)索引排序功能
使用Python怎么實(shí)現(xiàn)一個(gè)索引排序功能

看完上述內(nèi)容,你們掌握使用Python怎么實(shí)現(xiàn)一個(gè)索引排序功能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI