You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python网页爬虫MongoDB关键词查询失效问题求助

问题分析与解决方法

核心问题

你的代码没把抓取到的文章段落内容存入MongoDB,反而存了个空字典mydict,导致数据库里根本没有实际的文章文本,自然查不到特定词汇。另外循环打印段落的语句没缩进,存在语法错误。

修复步骤

  1. 提取并整理段落文本:把每个段落的文本提取出来,要么存成列表,要么拼接成完整文章,再写入数据库。
  2. 修正语法错误:给循环打印语句加上正确缩进。
  3. 正确存储数据:把整理好的文本内容存入MongoDB文档,而非空字典。

修改后的完整代码

import pymongo
import requests
from bs4 import BeautifulSoup

# 抓取网页内容
url = "https://www.bbc.com/news/articles/cy081nqx2zjo"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 提取所有段落文本并过滤空内容
paragraphs = soup.find_all("p")
article_content = []
for paragraph in paragraphs:
    text = paragraph.text.strip()
    if text:
        article_content.append(text)
        print(text)

# 检查抓取结果(改为统计内容总长度更合理)
def check_content(content):
    total_length = sum(len(p) for p in content)
    return "extracted fine" if total_length > 100 else "An exception occurred"
print(check_content(article_content))

# 连接MongoDB并存储数据
client = pymongo.MongoClient("mongodb://localhost:27017")
db = client["mydb"]
collection = db["summarizer"]
# 存储段落列表和拼接后的完整文本,方便后续查询
doc = {
    "url": url,
    "article_paragraphs": article_content,
    "full_article_text": "\n".join(article_content)
}
collection.insert_one(doc)

查询特定词汇的方法

数据存好后,用以下方式查询包含目标词汇的文章:

import pymongo

# 连接数据库
client = pymongo.MongoClient("mongodb://localhost:27017")
db = client["mydb"]
collection = db["summarizer"]

# 示例:查询包含"climate"的文档(忽略大小写)
keyword = "climate"
results = collection.find({"full_article_text": {"$regex": keyword, "$options": "i"}})

# 输出匹配结果预览
for doc in results:
    print(f"匹配文章URL:{doc['url']}")
    print(f"内容预览:{doc['full_article_text'][:200]}...\n")
  • 若要精确匹配某一段落,可查询article_paragraphs字段:collection.find({"article_paragraphs": {"$elemMatch": {"$regex": keyword}}})
  • 频繁查询的话,建议给full_article_text创建文本索引提升效率:collection.create_index([("full_article_text", pymongo.TEXT)]),之后用collection.find({"$text": {"$search": keyword}})查询更高效。

内容的提问来源于stack exchange,提问作者John Tomasson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:12:02