使用requests_html爬取网站无法获取英文内容的问题求助
解决方法
首先,该网站的语言切换不依赖Accept-Language请求头,而是通过Cookie记录用户语言偏好,同时你的代码存在两个关键问题:一是创建了HTMLSession却未用来发起请求,二是通过行号提取内容的方式完全依赖页面固定结构,极易失效。
正确实现步骤
- 获取英文语言Cookie:手动打开目标网站切换到英文界面,打开浏览器开发者工具(F12),在「网络」选项卡中复制包含
locale=en的Cookie字符串(可一并复制其他必要Cookie,确保请求有效性)。 - 用
HTMLSession发起请求:利用requests_html的会话管理保持Cookie,同时支持JS动态渲染(若页面内容为JS加载)。 - 用CSS选择器提取内容:通过页面元素的选择器精准获取标题,避免依赖固定行号。
修改后的代码
from requests_html import HTMLSession url = 'https://pcpalace.com.sa/products/ASUS-Vivobook-GO-E1504GA' # 替换为你从浏览器复制的包含locale=en的完整Cookie内容 headers = { "Cookie": "locale=en; 此处补充其他复制到的Cookie字段", "Accept-Language": "en-US,en;q=0.9" } session = HTMLSession() # 发起请求 r = session.get(url, headers=headers) # 若页面内容为JS动态渲染,调用render()等待加载完成 r.html.render(timeout=10) # 通过CSS选择器提取产品标题(可根据实际页面结构调整选择器) product_title = r.html.find('h1.product-title', first=True).text print(f"产品标题:{product_title}")
额外说明
- 若不想手动复制Cookie,可先发送POST请求到网站语言切换接口(通常为
https://pcpalace.com.sa/locale),提交locale=en参数,会话会自动保存语言偏好Cookie,之后再请求目标页面即可。 - 使用浏览器开发者工具的「选择元素」功能,可精准定位目标元素的CSS选择器,彻底避免硬编码行号的不稳定问题。
内容的提问来源于stack exchange,提问作者Kernel Technology
相关产品推荐
相关产品推荐

