首頁 > 科技

手把手教你使用Python打造一款簡易搜尋引擎

2021-06-25 10:21:43

來源:Python爬蟲與資料探勘

作者:Python進階者

1、前言

相信大家在知識共享的這個年代一定在網上下載了很多的檔案儲存以供日後有時間學習吧,畢竟硬碟空間也比較有限,下面我們就來說說我們要做的這個項目,就是搜尋盤搜裡的資源然後進行下載。

2、項目目標

實現搜尋自己想要的檔案,並且下載檔案。

3、項目準備

使用sublime text 3 開發。因為此次我們需要用到互動式來完成操作,所以需要在sublime text 3 下載一個sublimeREPL插件來進行輔助開發。

4、項目實現

(1)開啟盤搜,並隨意開啟一個連結,如下圖所示:

(2)然後可以看到這個畫面,如下圖所示。

(3)此時這個網頁地址為:

http://www.pansou.com/?q=成化十四年

由此可以看出它是一個get請求。於是requests.get搞起來,這樣我們就實現了第一步,搜尋。於是,可以這樣寫程式碼:

import requests

def down(content):

content=input('請輸入要下載的檔名')

rep=requests.get('http://www.pansou.com/?q='+str(content))

rep.encoding='utf-8'

(4)這樣就得到了上個頁面中的網頁原始碼,我們通過搜尋相關關鍵字發現竟然搜不到:

(5)那麼這是怎麼回事?原來這是因為ajax非同步載入導致的部分關鍵程式碼顯示不出來。這可就犯難了,換句話說這就觸及到我的知識點盲區了。因為小編並未學過前端,只知道有ajax這回事,哪裡知道這個問題怎麼產生怎麼解決了。不過不用怕,還好小編有一個大絕招,那就是找介面。我找呀找,終於被我找到了,哎,功夫不負苦心人。如圖所示:

(6)發現這是個json格式的所以我們現在可以將他進行讀取,如圖:

(7)不容易啊,json的坑很多,於是決定用字典。哈哈哈哈,果然適合自己的才是最香的。找到了這些東西我們就可以把他們提取出來啦,這樣我們就提取出了第一頁的所有結果,要想提取第二頁的結果只需將p的結果改為2即可。

最終的結果,如圖:

(8)接下來我們強化下程式,讓他具有互動功能,供使用者選擇。

(9)但是我們瞭解到callback一般都是可變的函數,所以真正能用上的就只有兩個參數,q和p,於是:

這樣就完成了指定頁面的檔案瀏覽。

下載的話也比較簡單,直接將連結複製到瀏覽器中即可,這樣就完成了一個最簡單的搜尋引擎了。

5、小結

(1)不建議抓取太多資料,容易對伺服器造成負載,淺嘗輒止即可。

(2)本文基於Python網路爬蟲,利用爬蟲庫,打造了一款簡易的Python搜尋引擎。

(3)實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。


IT145.com E-mail:sddin#qq.com