简单的网页搜索引擎

需求:抓取多个⽹⻚的内容,创建⼀个简单的索引,然后实现⼀个⼩型的搜索功能,以理解搜索技术的基本原理。

分析:要创建⼀个简单的⽹⻚搜索引擎,需要完成⼏个步骤:⾸先,抓取多个⽹⻚的内容;然后,从这些内容中提取⽂本,创建⼀个简单的索引;最后,实现⼀个搜索功能,允许⽤⼾查询索引并返回相关的结果。

步骤 1: 抓取⽹⻚内容

⾸先,需要从⼏个⽹⻚抓取内容。为简化,将使⽤静态HTML⻚⾯作为⽰例。在实际应⽤中,可能会使⽤ requests 和 BeautifulSoup 从实际的⽹站抓取内容。

步骤 2: 创建索引

其次,需要从抓取到的内容中提取⽂本,并创建⼀个简单的索引。在这个例⼦中,索引将是⼀个字典,键是单词,值是包含该单词的⽹⻚列表。

步骤 3: 实现搜索功能

最后,将实现⼀个简单的搜索功能,允许⽤⼾输⼊⼀个查询词,然后返回包含该词的所有⽹⻚。

from collections import defaultdict
import requests
from bs4 import BeautifulSoup

 # ⽰例⽹⻚列表
urls = [
    'http://example.com/page1',
    'http://example.com/page2',
    # 添加更多⽹⻚URL
]

# 索引,格式为{word: [url1, url2]}
index = defaultdict(set)

# 抓取⽹⻚并创建索引
for url in urls:
    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        text = soup.get_text()
        words = text.split()
        for word in words:
            index[word.lower()].add(url)

# 搜索函数
def search(query):
    """根据查询词返回包含该词的⽹⻚列表"""
    return index.get(query.lower(), [])

# ⽰例搜索
query = 'python'
results = search(query)
print(f"包含 '{query}' 的⽹⻚有: {results}")

 在这个脚本中:

• 定义了⼀个URL列表 urls ,这些是想要抓取的⽹⻚。

• 使⽤ defaultdict(set) 创建⼀个索引,其中键是单词,值是包含该单词的URL集合。这样可以避免重复记录同⼀URL。

• 对于每个URL,使⽤ requests.get 抓取⽹⻚内容,然后⽤ BeautifulSoup 解析HTML,提取纯⽂本。之后,将⽂本拆分成单词,并更新索引。

• search 函数接受⼀个查询词,返回索引中包含该查询词的URL列表。

  • 27
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值