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

使用BeautifulSoup/Selenium爬取必应词典示例句异常问题求助

必应词典爬取问题解决方案

一、requests+BeautifulSoup爬取不到示例句的原因

必应词典的示例句内容是动态加载的:直接通过requests.get请求搜索URL时,服务器返回的只是页面的初始HTML结构,示例句这类内容是页面加载完成后,通过前端发起AJAX请求从后端接口获取的,所以你拿到的response.content里不会包含这些数据。

解决方法:直接调用后端API接口

可以通过浏览器开发者工具的「网络」面板,找到页面加载时获取示例句的AJAX接口,直接用requests请求该接口并解析JSON数据。针对avengers的搜索示例代码如下:

import requests

url = "https://cn.bing.com/dict/api/search"
params = {
    "q": "avengers",
    "mkt": "zh-cn",
    "setlang": "zh-cn"
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Referer": "https://cn.bing.com/dict/"
}

response = requests.get(url, params=params, headers=headers)
data = response.json()

# 提取英文示例句
for item in data.get('sen_li', []):
    print(item.get('sen_en', '').strip())

二、Selenium直接访问搜索URL无结果的解决方法

必应词典的反爬机制会拦截直接带参数的搜索请求,而从主页手动搜索则能正常返回结果。需要模拟真实用户的操作流程:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
# 先打开必应词典主页
driver.get("https://cn.bing.com/dict")

# 找到搜索框并输入关键词
search_box = driver.find_element(By.ID, "sb_form_q")
search_box.send_keys("avengers")
# 按回车触发搜索
search_box.send_keys(Keys.ENTER)

# 等待页面加载完成
time.sleep(2)

# 提取英文示例句
examples = driver.find_elements(By.CLASS_NAME, "sen_en")
for example in examples:
    print(example.text.strip())

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:13:08