??平時我們要搜索某個東西的時候薯酝,我們往往會用到百度百科,比如搜“上核猓”吴菠,會出現(xiàn)以下頁面:
百度詞條 上海
??那么,我們能不能利用爬蟲浩村,自己制作一個簡單的搜索引擎呢做葵?
??Why not?心墅!我們自作簡單的搜索引擎酿矢,展示輸入詞條的簡介部分,這樣可以既減少工作量怎燥,又展示了該搜索引擎的基本原理瘫筐。
??以下為筆者制作的簡單的搜索引擎,實現(xiàn)的功能為:讀取輸入的詞條铐姚,并輸出百度百科里該詞條的簡介部分策肝。
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 18 15:58:13 2017
@author: JClian
"""
import re
import bs4
import urllib.request
from bs4 import BeautifulSoup
import urllib.parse
import sys
search_item = input("Enter what you want(Enter 'out' to exit):")
while search_item != 'out':
if search_item == 'out':
exit(0)
print("please wait...")
try:
url = 'https://baike.baidu.com/item/'+urllib.parse.quote(search_item)
html = urllib.request.urlopen(url)
content = html.read().decode('utf-8')
html.close()
soup = BeautifulSoup(content, "lxml")
text = soup.find('div', class_="lemma-summary").children
print("search result:")
for x in text:
word = re.sub(re.compile(r"<(.+?)>"),'',str(x))
words = re.sub(re.compile(r"\[(.+?)\]"),'',word)
print(words,'\n')
except AttributeError:
print("Failed!Please enter more in details!")
search_item = input("Enter what you want(Enter 'out' to exit):")
其中search_item為輸入詞條,進入while循環(huán)可一直搜索隐绵,當(dāng)輸入為'out'時退出之众。text為該詞條的百度百科簡介的網(wǎng)頁形式,通過正則表達式將其中的文字提取出來(當(dāng)然提取后的文字形式還有待美化)依许。如果百度百科里沒有該詞條棺禾,輸出失敗信息,并提示測試這將詞條具體化些再輸入峭跳。這樣膘婶,百度百科有的詞條,我們這個搜索引擎里也就有了響應(yīng)的簡介部分坦康。
??接下來是測試時間(在Jupyter Notebook上測試):
詞條 上海市
詞條 南京 南京市
詞條 井上真央
??測試效果還是不錯的竣付,真是簡單又好使诡延,要不你也來試試滞欠?
??本篇分享如有不足之處,還請批評指正肆良。歡迎交流~~
??期待下一篇分享...