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

Xpath在Chrome中生效但在lxml中失效的爬取问题求助

解决Fandom假面骑士页面日文标题爬取失败问题及剧情简介翻译

一、日文标题爬取失败的修复

问题根源

Chrome开发者工具展示的是浏览器渲染后的DOM结构,而requests获取的是服务器返回的原始HTML,二者存在层级差异——你编写的XPath忽略了原始HTML中包裹日文标题的<p>节点;此外,无请求头的请求可能被网站返回简化结构,导致节点匹配失败。

修正方案

  1. 调整XPath,补充<p>节点层级;
  2. 添加浏览器请求头,模拟正常访问行为。

修正后的代码:

import requests
from lxml import html

# 模拟浏览器请求头,避免网站返回简化结构
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'
}

def get_page_content(url):
    response = requests.get(url, headers=headers)
    response.encoding = 'utf-8'  # 确保字符编码正确
    return html.fromstring(response.content)

content = get_page_content("https://kamenrider.fandom.com/wiki/Conspiracy_IV:_Recapture_the_Driver!")
# 修正XPath,补充原始HTML中存在的p节点层级
japanese_title = content.xpath("//div[@class='mw-parser-output']/p/span/span[@class='t_nihongo_kanji']/text()")
print(japanese_title)  # 输出: ['謀略Ⅳ:ドライバーを奪還せよ!']

二、剧情简介英文转中文

可以使用googletrans库实现翻译(若无法访问谷歌服务,可替换为百度、腾讯等国内翻译API,需自行申请密钥),示例代码:

from googletrans import Translator

# 获取剧情简介的英文内容
synopsis_paragraphs = content.xpath("//p[preceding-sibling::h2[contains(span,'Synopsis')] and following-sibling::h2[contains(span,'Plot')]]/text()")
english_synopsis = ' '.join(synopsis_paragraphs).strip()

# 翻译为中文
translator = Translator()
chinese_synopsis = translator.translate(english_synopsis, dest='zh-CN').text
print(chinese_synopsis)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:10:26