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

如何用Beautiful Soup提取网站特定文本制作日语汉字闪卡?

爬取日语汉字词汇制作闪卡问题

需求概述

我正在爬取网站制作日语闪卡,计划将内容整理为包含以下信息的文本文件:

  • 目标汉字
  • 3个包含该汉字的词汇示例
  • 每个词汇对应的假名读音
  • 每个词汇的英文释义

期望输出格式

kanji
{词汇1},{假名},{英文释义}
{词汇2},{假名},{英文释义}
{词汇3},{假名},{英文释义}

示例

福
祝福,しゅくふ,blessing
幸福,こうふく,happiness; well-being; joy; welfare; blessedness
裕福,ゆうふく,wealthy; rich; affluent; well-off

当前问题

目前仅针对单个汉字做测试,后续会批量处理汉字列表,但不知道如何从目标网站提取指定区域的文本。我知道可以用BeautifulSoup,但不清楚具体代码写法,现有代码如下:

from requests_html import HTMLSession
from bs4 import BeautifulSoup

word1_list = []
word2_list = []
word3_list = []

kanji = '福'
url = f'https://jpdb.io/search?q={kanji}+%23kanji&lang=english#a'
session = HTMLSession()
response = session.get(url)

# // 不确定这里该写什么
soup = BeautifulSoup(response.html.html, 'html.parser')
words = soup.select('div.jp')  # // 不确定选择器是否正确
word1_list.append(words)  # // 想把需要的数据放到这里

解决方案

步骤说明

  1. 分析页面结构:目标词汇项通常包含三个核心部分——汉字词汇、假名读音、英文释义,需要通过CSS选择器定位对应元素。
  2. 提取数据:遍历前3个词汇项,分别提取所需内容并整理成指定格式。
  3. 异常处理:添加简单的异常捕获,避免因页面结构变化或元素缺失导致程序崩溃。

修改后的代码

from requests_html import HTMLSession
from bs4 import BeautifulSoup
import time

def get_kanji_vocab(kanji):
    url = f'https://jpdb.io/search?q={kanji}+%23kanji&lang=english#a'
    session = HTMLSession()
    # 添加请求头模拟浏览器,避免被拦截
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    response = session.get(url, headers=headers)
    soup = BeautifulSoup(response.html.html, 'html.parser')
    
    # 定位词汇项容器(需根据页面实际结构调整选择器)
    vocab_containers = soup.select('div.vocabulary-entry')
    result = [kanji]
    
    # 只取前3个有效词汇
    for container in vocab_containers[:3]:
        try:
            # 提取汉字词汇
            word = container.select_one('.jp-text').text.strip()
            # 提取假名读音
            kana = container.select_one('.kana-text').text.strip()
            # 提取英文释义
            english = container.select_one('.english-text').text.strip()
            result.append(f"{word},{kana},{english}")
        except AttributeError:
            # 元素缺失时跳过该词汇
            continue
    
    return '\n'.join(result)

# 测试单个汉字
if __name__ == '__main__':
    test_kanji = '福'
    print(get_kanji_vocab(test_kanji))
    # 批量处理示例
    # kanji_list = ['福', '山', '水']
    # for kanji in kanji_list:
    #     print(get_kanji_vocab(kanji))
    #     time.sleep(1)

关键注意点

  • 选择器调整:实际使用时需打开目标网站开发者工具,确认词汇项、汉字、假名、释义对应的真实CSS类名或标签,替换代码中的选择器。
  • 反爬策略:添加请求头、设置请求间隔,避免触发网站反爬机制。
  • 数据校验:可添加额外逻辑校验提取数据的格式,确保输出质量。

内容的提问来源于stack exchange,提问作者Lucas Frykman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:55:22