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

爬取亚马逊招聘网站无动态数据返回,求解决方案

亚马逊招聘网站动态数据爬取解决方案
  • 提取页面内嵌的JS变量数据
    很多动态站点会把初始渲染需要的招聘数据直接内嵌在HTML的<script>标签里,而非通过XHR请求加载。你可以解析返回的HTML,定位包含数据的脚本标签,提取其中的JSON内容:

    import requests
    from bs4 import BeautifulSoup
    import json
    
    target_url = "https://www.amazon.jobs/en/search?base_query=&loc_query="
    resp = requests.get(target_url)
    soup = BeautifulSoup(resp.text, "html.parser")
    
    # 遍历所有script标签,匹配包含招聘数据的内容
    for script in soup.find_all("script"):
        if script.string and "jobSearch" in script.string:
            # 截取JSON格式部分,需根据实际内容调整匹配逻辑
            json_start = script.string.find("{")
            json_end = script.string.rfind("}") + 1
            job_data = json.loads(script.string[json_start:json_end])
            print(job_data["jobs"])  # 根据实际结构提取对应字段
            break
    
  • 用浏览器自动化工具渲染页面
    如果数据是通过浏览器JS环境动态生成(无独立XHR请求),可以用Playwright或Selenium模拟完整浏览器加载流程,直接获取渲染后的DOM内容:

    from playwright.sync_api import sync_playwright
    from bs4 import BeautifulSoup
    
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(target_url)
        # 等待招聘卡片元素加载完成
        page.wait_for_selector(".job-tile")
        # 提取渲染后的页面HTML
        rendered_html = page.content()
        soup = BeautifulSoup(rendered_html, "html.parser")
        # 提取招聘信息
        for job_card in soup.find_all("div", class_="job-tile"):
            print(job_card.find("h3").get_text(strip=True))
        browser.close()
    
  • 匹配浏览器请求头与Cookie
    亚马逊站点可能会验证请求的合法性,复制浏览器正常访问时的请求头(如User-Agent、Accept、Accept-Language)和Cookie,添加到你的爬虫请求中:

    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",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        # 其他必要头信息从浏览器DevTools复制
    }
    cookies = {
        # 从浏览器DevTools的Network面板复制Cookie键值对
    }
    resp = requests.get(target_url, headers=headers, cookies=cookies)
    
  • 检查静态JSON资源
    在浏览器正常加载页面时,查看Network面板的"All"标签,筛选.json后缀的请求,可能会找到存储招聘数据的静态JSON文件,直接请求该文件即可获取数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:22:22