【问题标题】:Scrape and Extract data from https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ when it is not visible in the 'Source Code' of the webpage当网页的“源代码”中不可见时,从 https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ 抓取和提取数据
【发布时间】:2017-02-05 02:21:53
【问题描述】:

我正在尝试编写一个自动化 PHP 脚本来从 URL https://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ 抓取并提取所有“职位”(初级保健医师 - 潮水市场、初级保健医师 - 列治文市场等)

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

任何帮助将不胜感激。

感谢和问候!

【问题讨论】:

  • 不相关,但在我看来,PhantomJS 可能会更容易处理。
  • 也许他们想保护他们的资源?

标签: php web-scraping web-crawler data-extraction


【解决方案1】:

查看网站发出的请求,您会注意到包含您关心的数据的 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

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

  1. 请求 ttps://chenmed.wd1.myworkdayjobs.com/en-US/jencare/ 附加标头 Accept:application/json,application/xml(参见例如 How do I send a GET request with a header from PHP?
  2. 解析返回的 JSON(例如使用http://php.net/manual/de/function.json-decode.php

【讨论】:

  • 工作就像一个魅力。谢谢@Jonathan
猜你喜欢
  • 1970-01-01
  • 2021-12-03
  • 2017-04-08
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多