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

Python使用XPath爬取Twitch招聘站点无有效结果如何解决?

问题原因

你当前抓取失败的核心原因是:Twitch招聘页面的岗位列表属于前端动态渲染内容,你用requests.get()拿到的仅为页面初始静态HTML,仅包含导航、页脚等公共内容,岗位数据是页面加载完成后由JS异步请求接口渲染填充的,不存在于初始HTML中,所以XPath提取不到目标内容。

解决方案

方案1:直接调用后端数据接口(推荐,效率更高)

你可以直接抓取岗位数据的后端接口,无需解析HTML:

  1. 打开浏览器开发者工具(F12),切换到「网络」面板,筛选「Fetch/XHR」请求,刷新页面后找到返回岗位列表的JSON接口,当前测试可用的接口为https://www.twitch.tv/jobs/careers/api/v1/jobs
  2. 直接请求该接口解析JSON即可拿到全量岗位数据,示例代码如下:
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0",
    "Accept": "application/json"
}
# 直接请求岗位数据接口
url = "https://www.twitch.tv/jobs/careers/api/v1/jobs"
response = requests.get(url, headers=headers)
# 解析JSON数据
job_data = response.json()

# 遍历输出岗位信息
for job in job_data.get("jobs", []):
    print(f"岗位名称:{job.get('title')}")
    print(f"所属部门:{job.get('department')}")
    print(f"工作地点:{job.get('location')}")
    print("---")

方案2:使用无头浏览器模拟页面加载

如果接口存在加密、签名校验等难以直接调用的情况,可以使用selenium、playwright等工具模拟浏览器行为,等待页面完全渲染后再提取数据,示例代码(基于selenium)如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("https://www.twitch.tv/jobs/careers/")

# 等待岗位列表元素加载完成,最长等待10秒
wait = WebDriverWait(driver, 10)
job_elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, './/a[contains(@href, "/jobs/careers/")]')))

# 提取岗位信息
for job in job_elements:
    job_text = job.text.strip()
    if job_text and job_text not in ["Job Openings", "Early Career", "Equity & Inclusion", "Blog"]:
        print(job_text)

driver.quit()

注意事项

  • 控制请求频率,避免对目标站点服务器造成不必要的压力
  • 抓取行为请遵守目标站点的robots协议以及相关服务条款

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:06:00