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

Python3使用BeautifulSoup抓取网页时如何正确配对中英双语例句

解决方法

核心逻辑是利用页面的DOM结构特性:该站点的每条双语例句组固定为class=e的英文行在前,紧邻的下一个同级tr节点就是对应的class=c中文行,不需要分开抓取两类元素再按索引配对,从根源避免错位问题。

完整实现代码

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup

def parseDictWeb():
    print("parse....")
    url = "http://www.jukuu.com/search.php?q=apple"
    req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
    html_page = urlopen(req).read()
    soup = BeautifulSoup(html_page, 'html.parser')
    # 只抓取所有英文行作为遍历基准
    eng_trs = soup.find_all("tr", {"class": "e"})
    lst = []
    for eng_tr in eng_trs:
        # 提取英文内容,strip去掉多余空白
        eng_text = eng_tr.get_text(strip=True)
        # 找当前英文行的下一个相邻tr节点
        next_tr = eng_tr.find_next_sibling("tr")
        # 判断下一个tr是否为对应的中文行
        zh_text = ""
        if next_tr and next_tr.get("class") == ["c"]:
            zh_text = next_tr.get_text(strip=True)
        # 加入结果列表
        lst.append({"e": eng_text, "c": zh_text})
    return lst

# 测试
if __name__ == "__main__":
    res = parseDictWeb()
    print(res)

方案优势

  • 就算出现某个英文例句没有对应中文的情况,也只会把该条的c字段置为空,不会影响后续所有配对的准确性,完全避免错位问题
  • 只需要一次遍历,执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:24:07