手把手教你使用Python打造一款简易搜索引擎
/1 前言/
????相信大家在知識(shí)共享的這個(gè)年代一定在網(wǎng)上下載了很多的文件保存以供日后有時(shí)間學(xué)習(xí)吧,畢竟硬盤空間也比較有限,下面我們就來說說我們要做的這個(gè)項(xiàng)目,就是搜索盤搜里的資源然后進(jìn)行下載。
/2 項(xiàng)目目標(biāo)/
??? 實(shí)現(xiàn)搜索自己想要的文件,并且下載文件。
/3?項(xiàng)目準(zhǔn)備/
????使用sublime text 3 開發(fā)。因?yàn)榇舜挝覀冃枰玫浇换ナ絹硗瓿刹僮?#xff0c;所以需要在sublime text 3 下載一個(gè)sublimeREPL插件來進(jìn)行輔助開發(fā)。
/4?項(xiàng)目實(shí)現(xiàn)/
1、打開盤搜,并隨意打開一個(gè)鏈接,如下圖所示:
2、然后可以看到這個(gè)畫面,如下圖所示。
3、此時(shí)這個(gè)網(wǎng)頁地址為:
http://www.pansou.com/?q=成化十四年由此可以看出它是一個(gè)get請求。于是requests.get搞起來,這樣我們就實(shí)現(xiàn)了第一步,搜索。于是,可以這樣寫代碼:
import requests
def down(content):content=input('請輸入要下載的文件名')rep=requests.get('http://www.pansou.com/?q='+str(content))rep.encoding='utf-8'
4、這樣就得到了上個(gè)頁面中的網(wǎng)頁源代碼,我們通過搜索相關(guān)關(guān)鍵字發(fā)現(xiàn)竟然搜不到:
5、那么這是怎么回事?原來這是因?yàn)閍jax異步加載導(dǎo)致的部分關(guān)鍵代碼顯示不出來。這可就犯難了,換句話說這就觸及到我的知識(shí)點(diǎn)盲區(qū)了。
因?yàn)樾【幉⑽磳W(xué)過前端,只知道有ajax這回事,哪里知道這個(gè)問題怎么產(chǎn)生怎么解決了。不過不用怕,還好小編有一個(gè)大絕招,那就是找接口。我找呀找,終于被我找到了,哎,功夫不負(fù)苦心人。如圖所示:
6、發(fā)現(xiàn)這是個(gè)json格式的所以我們現(xiàn)在可以將他進(jìn)行讀取,如圖:
7、不容易啊,json的坑很多,于是決定用字典。哈哈哈哈,果然適合自己的才是最香的。
找到了這些東西我們就可以把他們提取出來啦,這樣我們就提取出了第一頁的所有結(jié)果,要想提取第二頁的結(jié)果只需將p的結(jié)果改為2即可。
最終的結(jié)果,如圖:
8、接下來我們強(qiáng)化下程序,讓他具有交互功能,供用戶選擇。
9、但是我們了解到callback一般都是可變的函數(shù),所以真正能用上的就只有兩個(gè)參數(shù),q和p,于是:
這樣就完成了指定頁面的文件瀏覽。
下載的話也比較簡單,直接將鏈接復(fù)制到瀏覽器中即可,這樣就完成了一個(gè)最簡單的搜索引擎了。
/5 小結(jié)/
1、不建議抓取太多數(shù)據(jù),容易對服務(wù)器造成負(fù)載,淺嘗輒止即可。
2、本文基于Python網(wǎng)絡(luò)爬蟲,利用爬蟲庫,打造了一款簡易的Python搜索引擎。
3、實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。
4、如果需要本文源碼的話,請?jiān)诠娞?hào)后臺(tái)回復(fù)“引擎”關(guān)鍵字進(jìn)行獲取,覺得不錯(cuò),記得給個(gè)star噢。
end
由菜鳥學(xué)Python原班人馬打造的公眾號(hào)【程序員GitHub】,專注于分享GitHub上有趣的資源包括,Python,Java,Go語言前端學(xué)習(xí)等優(yōu)質(zhì)的學(xué)習(xí)資源,爆料程序員圈的新鮮趣事,熱門干貨,職場感悟,感興趣的小伙伴可以來捧場!
程序員GitHub
長按2秒,輸入:【福利】
總結(jié)
以上是生活随笔為你收集整理的手把手教你使用Python打造一款简易搜索引擎的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11个基于vue的UI框架
- 下一篇: Python爬虫 爬取新浪微博热搜