抓取带加载更多按钮的站点时JSON接口404无法获取数据如何解决
抓取Workable站点职位数据解决方案
现有代码失效原因
- XPath解析代码失效:目标站点采用客户端JavaScript渲染职位数据,
requests.get仅能获取未填充内容的初始HTML骨架,不存在对应XPath路径的节点,因此无返回结果。 - 接口请求代码失效:
https://apply.workable.com/api/v3/accounts/fitxr/jobs为POST类型接口,直接发送GET请求会被服务端拦截返回404,同时缺少必填的请求头、请求体参数也会导致请求失败。
可运行实现代码
import requests # 配置请求头,必须包含User-Agent和Content-Type headers = { "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0", "Content-Type": "application/json" } api_url = "https://apply.workable.com/api/v3/accounts/fitxr/jobs" # POST请求体,可按需填写筛选条件,空值代表返回所有匹配职位 request_body = { "query": "", "location": "", "department": [], "worktype": [], "remote": [], "page": 1 # 分页参数,需获取更多页时递增即可 } response = requests.post(api_url, headers=headers, json=request_body) response.raise_for_status() # 校验请求是否成功 jobs = response.json()["results"] for job in jobs: print(f"职位名称:{job['title']},职位链接:https://apply.workable.com/fitxr/jobs/{job['shortcode']}")
全量数据抓取说明
站点职位数据按分页返回,单页默认返回10条数据,需获取全部职位时可循环递增request_body中的page参数,直到返回的results字段为空即可停止请求。
内容的提问来源于stack exchange,提问作者scotmanDavid
相关产品推荐
相关产品推荐

