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

如何用Selenium获取速卖通阿拉伯语站点的阿拉伯语翻译评论

问题:获取速卖通阿拉伯语站点的阿拉伯语翻译评论

我用以下Selenium代码爬取速卖通阿拉伯语站点的商品评论,但获取到的是自动翻译成英文的内容;手动点击翻译复选框后,只能拿到原语言评论,现在需要调整代码来获取已翻译成阿拉伯语的评论内容。

原代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

url = 'https://ar.aliexpress.com/item/1005003801507855.html?spm=a2g0o.productlist.0.0.1e951bc72xISfE&algo_pvid=6d3ed61e-f378-43d0-a429-5f6cddf3d6ad&algo_exp_id=6d3ed61e-f378-43d0-a429-5f6cddf3d6ad-8&pdp_ext_f=%7B%22sku_id%22%3A%2212000027213624098%22%7D&pdp_pi=-1%3B40.81%3B-1%3B-1%40salePrice%3BMAD%3Bsearch-mainSearch&gatewayAdapt=glo2ara'

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get(url)

wait = WebDriverWait(driver, 10)

driver.execute_script("arguments[0].scrollIntoView();", wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.tab-content'))))
driver.get(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#product-evaluation'))).get_attribute('src'))

data=[]

while True:

    for e in driver.find_elements(By.CSS_SELECTOR, 'div.feedback-item'):

        try:
            country = e.find_element(By.CSS_SELECTOR, '.user-country > b').text
        except:
            country = None

        try:
            comment = e.find_element(By.CSS_SELECTOR, '.buyer-feedback span').text
            print(comment)
        except:
            comment = None

        data.append({
            'country':country,
            'comment':comment
        })
    try:
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#complex-pager a.ui-pagination-next'))).click()
    except:
        break

pd.DataFrame(data).to_csv('filename.csv',index=False)

解决方案

核心问题是进入评论页面后,没有主动设置翻译目标为阿拉伯语。以下是修改后的代码,重点处理翻译切换和目标语言评论的获取:

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

url = 'https://ar.aliexpress.com/item/1005003801507855.html?spm=a2g0o.productlist.0.0.1e951bc72xISfE&algo_pvid=6d3ed61e-f378-43d0-a429-5f6cddf3d6ad&algo_exp_id=6d3ed61e-f378-43d0-a429-5f6cddf3d6ad-8&pdp_ext_f=%7B%22sku_id%22%3A%2212000027213624098%22%7D&pdp_pi=-1%3B40.81%3B-1%3B-1%40salePrice%3BMAD%3Bsearch-mainSearch&gatewayAdapt=glo2ara'

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get(url)

wait = WebDriverWait(driver, 10)

# 滚动到评论区域并进入评论iframe
driver.execute_script("arguments[0].scrollIntoView();", wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.tab-content'))))
comment_iframe_src = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#product-evaluation'))).get_attribute('src')
driver.get(comment_iframe_src)

# 切换翻译为阿拉伯语
try:
    # 定位翻译切换复选框(速卖通阿拉伯语站的翻译控件通常在评论区顶部)
    translate_switch = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.translate-switch input')))
    # 如果当前未选中,点击切换到阿拉伯语翻译
    if not translate_switch.is_selected():
        translate_switch.click()
    # 等待阿拉伯语翻译内容加载完成
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.buyer-feedback span[lang="ar"]')))
except Exception as e:
    print(f"设置翻译时出错: {e}")

data = []

while True:
    # 等待当前页所有评论加载完毕
    wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'div.feedback-item')))
    
    for e in driver.find_elements(By.CSS_SELECTOR, 'div.feedback-item'):
        country = None
        comment = None
        
        try:
            country = e.find_element(By.CSS_SELECTOR, '.user-country > b').text
        except:
            pass
        
        try:
            # 优先获取带阿拉伯语标识的评论内容
            comment = e.find_element(By.CSS_SELECTOR, '.buyer-feedback span[lang="ar"]').text
        except:
            #  fallback到默认文本,避免空值
            try:
                comment = e.find_element(By.CSS_SELECTOR, '.buyer-feedback span').text
            except:
                pass
        
        data.append({
            'country': country,
            'comment': comment
        })
    
    # 处理翻页逻辑
    try:
        next_page_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#complex-pager a.ui-pagination-next')))
        # 检查按钮是否禁用,避免无限循环
        if 'ui-pagination-disabled' in next_page_btn.get_attribute('class'):
            break
        next_page_btn.click()
        # 等待页面刷新,旧评论元素失效
        wait.until(EC.staleness_of(driver.find_element(By.CSS_SELECTOR, 'div.feedback-item')))
    except:
        break

# 保存结果
pd.DataFrame(data).to_csv('aliexpress_ar_comments.csv', index=False)
# 关闭浏览器
driver.quit()

关键修改点

  1. 翻译切换逻辑:进入评论页面后,主动定位翻译复选框并切换到阿拉伯语翻译状态,等待翻译内容加载完成
  2. 评论定位优化:优先选择带有lang="ar"属性的元素,确保获取的是阿拉伯语翻译后的内容
  3. 翻页逻辑增强:检查翻页按钮是否禁用,避免无效点击;等待页面刷新后再继续爬取
  4. 异常处理优化:简化try-except结构,避免不必要的空值赋值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:19:56