使用更多按钮和 JSON 文件从站点抓取数据不会加载

Scraping data from site with more button and JSON file doesn't load

所以我试图从以下站点抓取所有可用的工作:https://apply.workable.com/fitxr/问题是该站点使用 javascript 并且有一个加载更多按钮。

我进入 chrome 网络设置并找到该站点使用的 json 文件

但是当我访问网站时 https://apply.workable.com/api/v3/accounts/fitxr/jobs 我收到一个未找到的错误

不确定如何获取数据。

这是我编写的代码,用于尝试通过 xpath 抓取数据。

    data = []
    headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
    }
    url = "https://apply.workable.com/fitxr/"
    page = requests.get(url, headers=headers)
    tree = html.fromstring(page.content)
    xpath = '/html/body/div/div/div/main/div[2]/ul/li[*]/div/h3'
    jobs = tree.xpath(xpath)
    for job in jobs:
        print(job.text)

这里使用 JSON 网站

    data = []
    url = "https://apply.workable.com/api/v3/accounts/fitxr/jobs"
    r = requests.get(url)
    json = r.json()
    for x in range(len(json["results"])):
        print(json["results"][x]["title"])

两套代码return没什么

您在浏览器的开发工具中找到的请求是对 /jobs 端点的 POST 请求;您的尝试使用了 requests.get(向同一端点发送 GET 请求)。 /jobs 显然没有响应 GET 请求。

将您对 requests.get() 的调用更改为 requests.post(),改为:

import requests 

data = []
url = "https://apply.workable.com/api/v3/accounts/fitxr/jobs"
r = requests.post(url)
json = r.json()
for x in range(len(json["results"])):
    print(json["results"][x]["title"])

Repl.it

结果:

Engineering Manager - Services & Full Stack
Interim Talent Partner
Customer Experience Manager
Content Manager (Production)
Performance Marketing Manager
Performance Marketing Manager
Content Creator (Fitness and Music)
Content Creator (Fitness and Music)
Automation Tester
Engineering Manager - Security, Data and DevOps