当在网页的“源代码”中不可见时,从 https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ 抓取和提取数据

Sam*_*Sam 1 php web-crawler web-scraping data-extraction

我正在尝试编写一个自动 PHP 脚本来从 URL https://chenmed.wd1.myworkdayjobs.com/en 中抓取和提取所有“职位”(初级保健医师 - 潮水市场、初级保健医师 - 里士满市场等)-美国/jencare/

然而,这似乎并不简单,因为所需的数据在网页的源代码中并不直接可见。我还尝试检查不同浏览器的“开发人员工具->网络”,但找不到数据源。

任何帮助将不胜感激。

感谢和问候!

小智 5

查看网站发出的请求,您会注意到一个 XHR 请求,其中包含您关心的数据:

在此处输入图片说明

但是,在浏览器中访问该 URL 的结果与导航到https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ 的结果相同。通过查看请求标头进一步调查

在此处输入图片说明

人们注意到Accept:application/json,application/xml(这表示客户端需要一个 json 或 xml 文档)。事实证明,使用此附加标头请求https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ 会返回所需的数据:

>>> import urllib.request
>>> req = urllib.request.Request('https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/')
>>> req.add_header('Accept', 'application/json,application/xml')
>>> urllib.request.urlopen(req).read().decode('utf-8').find('Primary Care Physician ') > 0
True
Run Code Online (Sandbox Code Playgroud)

因此,在 PHP 中,您可能希望执行以下步骤:

  1. 使用附加标头请求 ttps://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ Accept:application/json,application/xml(参见例如如何从 PHP 发送带有标头的 GET 请求?
  2. 解析返回的 JSON(例如使用http://php.net/manual/de/function.json-decode.php