【问题标题】:PHP scraping dynamically loaded contentPHP抓取动态加载的内容
【发布时间】:2012-04-15 08:29:54
【问题描述】:

我正在尝试从网站上抓取文章标题,但是此页面仅加载前五个标题,并且在用户向下滚动页面时加载更多(JSON 调用更多文章并注入页面)。

我构建的网络爬虫完美运行,但只能找到前 5 篇默认文章,而我想要实现的是加载超过 5 篇。有没有使用 PHP 实现的方法,如果你能解释我为什么/如何工作我真的很感激,因为我喜欢学习这些东西。

【问题讨论】:

  • 您需要发布您的代码,如果没有它,您认为任何人都能够给您答案吗?
  • 您可以尝试直接访问源代码,而不是报废页面,使用 curl 注入任何 POST/GET 所需的参数
  • Lawrence 的建议是最合理的,但不了解相关网站会使回答变得困难。您是否还检查了该网站是否有例如 RSS 提要或站点地图?
  • 请记住,如果相关目标网站更改其 HTML 结构或 UI 方法,您的抓取工具可能会损坏。
  • 网站中没有提要/api,如果有的话会容易得多。

标签: php web-scraping dynamic-content


【解决方案1】:

您可以使用 chrome 的网络监视器记录 ajax 请求的来源,然后从您的 webscraper 请求这些请求,但这确实是一个“make shift api”,如果站点更改为 json 格式,您可以使用php函数json_decode解码json。

为了首先检索数据,您必须使用 file_get_contents

但这只会允许 GET 如果您想要更多“高级”选项(例如 POST ),则必须查看 cURL

【讨论】:

  • 所以你建议模仿文章网站中的调用以返回下一个结果?
  • 这确实是我的建议,但这是一项棘手的业务,因为实际上并没有任何数据合同。寻找可用的 rss 提要或 api 可能会更好,但我想这不是你的 webscraper 背后的想法。
  • 是的,我可以看到它会如何更好地工作,但到目前为止,还没有可用于此目的的提要/api。因此,使用 json-decode 将允许我与网页中发生的向下滚动调用进行交互,或者必须执行该部分,然后 php 将解码结果?
  • 好的,感谢您的关注,您的回答将被标记为接受,因为您的回答让我对这种方法有了更好的了解。
  • @user524695 json_decode 函数将允许您将从源返回的 json 字符串解码为可用的数组或对象。您在相关网站上看到的是 js 或 jquery 与 self api 交互。如果您可以模仿从 js 传递到 api 的参数,那么您可以使用 json_decode 对结果进行解码,但是如果没有指向该站点的链接,我们无法给出完整的答案,只能给出建议;0
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2015-05-09
  • 2015-08-17
  • 2019-01-13
  • 2016-09-04
相关资源
最近更新 更多