使用更多按钮和 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"])
结果:
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
所以我试图从以下站点抓取所有可用的工作: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"])
结果:
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