科技知識動態:如何做一個簡易的搜索引擎

導讀跟大家講解下有關如何做一個簡易的搜索引擎,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說如何做一個簡易的搜索引擎,小編

跟大家講解下有關如何做一個簡易的搜索引擎,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說如何做一個簡易的搜索引擎,小編也收集到了有關如何做一個簡易的搜索引擎的相關資料,希望大家看到了會喜歡。

有時候因為工作、自身的需求,我們都會去瀏覽不同網站去獲取我們需要的數據,于是爬蟲應運而生,下面是我在開發一個簡單爬蟲的經過與遇到的問題。

上一次小白已經得到了一個任勞任怨的網絡小爬蟲,要是不搞一波小事情似乎對不太起這個小爬蟲,于是乎小白又鼓搗鼓搗參考各方大神的資料以倒排索引為基礎原理設計了一個簡答的搜索引擎。

之前的爬蟲只是得到了網頁的源碼而沒有做任何處理,乃是一個一次性的小爬蟲,所以小白用正則表達式對網頁內容進行匹配得到其中的網址,之后小爬蟲就可以利用這個自生自滅至死方休的幫我們爬取網頁拉,這里不得不提一下beautifulsoup和正則表達式了,據說beautifulsoup模塊是一個網頁爬取提取的利器,只可惜小寶在做完之后才聽得大名萬分遺憾沒能試用一番,但是正則表達時小白可是切身的研究了一丟丟,熟練了(強行熟練)也是非常的好用,比如提取網頁源碼的網址:

link_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", html) 這一句就提出個七七八八來,當然這么粗糙魚目混珠的情況也是少不了的,但是還是非常好用的, 雖然看起來很復雜但是只要掌握了(?<)、(?=)、.、+、?這幾種符號的用法小白覺得就可以解決大部分問題了, 哦這里還有提一句,正則表達式似乎不支持嵌套的情形, 大概形如“找到所有前面三個字符滿足條件A的字符a,條件A是這三個字符前面的內容滿足條件B”巴拉巴拉, 好吧感覺說的好亂讓我們暫且跳過這個話題。提取處理的匹配如果用findall是存儲在列表中的, 這樣我們就可以在一個網頁列表中一直加入新找到的鏈接一直重復爬取,小白這里自認為能力有限, 所以就從提取中的網頁鏈接爬取了100個網頁做一個輕裝版。這里提個醒,由于之前html鏈接提取的很粗糙, 所以可能把各種形如網頁鏈接的css文件路徑、圖片路徑什么亂七八糟的給爬下來, 不過我們這里就統一當作網頁鏈接在一個try·except模塊中進行connection, 不是鏈接的就會出現異常我們只要捕獲跳過就又可以愉快的繼續了~~。 有了爬取下來的網頁內容下面就應該是得到其中真正呈現在網頁中的東西了。 寫過網頁的同學們都應該知道網頁內容一般都在<p><\p>之中,title和鏈接什么的也有對應的標簽, 運用正則表單式理論上可以分離出來,不過小白親身時間發現只匹配一次效果非常不好, 匹配的內容的確包括想要的內容,但是因為標簽一般都是嵌套的嘛而且小白技術畢竟也不好正則表達式可能表述的也有問題, 所以總是會將內容嵌套在標簽中返回,這里就有一個比較笨的方法供大家參考,咳咳, 既然一次不能得到,那么就對內容進行再匹配,咳咳,經過了三層匹配外加一些小技巧終于是勉強匹配出來了, 這里代碼過于丑陋就不再貼出來了咳咳。

相關推薦:

Scrapy爬蟲入門教程四 Spider(爬蟲)

php實現簡單爬蟲的開發,php實現爬蟲

以上就是如何做一個簡易的搜索引擎的詳細內容,更多請關注php中文網其它相關文章!

來源:php中文網

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!