我正在尝试减少我的一位经销商的每种产品的库存数量。他们不知道如何导出这些数据。所以我想知道是否有人可以帮助我指明如何使用 PHP 抓取必须登录才能获取数据的网站的正确方向?它不是一个使用 SSL 的安全站点。
感谢您的任何提示,
克里斯·爱德华兹
到达您想要的地方的最简单方法是利用cURL。 cURL 的基本功能是,它允许您根据需要进行配置的 HTTP 请求并接收响应。这可以根据您的需要以不同程度的细节来完成。
您想要做的基本上是发出一个 HTTP 请求来获取您想要的页面并从响应的 HTML 中抓取数据。这可能很容易做到,但就您的情况而言,您需要克服一些障碍。
我假设“必须登录”意味着您必须先通过一个登录表单才能抓取任何内容。只需您的一点帮助,cURL 就可以伪造登录。
首先,您需要使用 cURL“提交”登录表单,就像手动提交一样。为了确保正确,您需要查看浏览器在手动提交表单时发出的 HTTP 请求,并使用 cURL 构建相同的请求。要详细查看 HTTP 请求,您可以使用 Firebug、Chrome 的开发人员工具或绝对精彩 Fiddler 调试代理.
提交有效的登录表单后,服务器很可能会向您发送一个 cookie,用于在后续请求中对您进行身份验证。该 cookie 将成为服务器 HTTP 响应标头的一部分(Set-Cookie
标题)。您需要记住该 cookie 的值,并包含Cookie
后续抓取到服务器时的标头——本质上,您正在做的事情与您登录时浏览器所做的完全一样。
最后,您可能需要多次往返才能找到目标。也许您需要抓取的 URL 事先并不知道,并且您需要抓取“列表”页面以找出要抓取的 URL 的某些可变部分。这可以通过简单地分步骤解决问题来解决:首先抓取“列表”页面,找出您需要的内容,然后抓取您真正想要的“详细信息”页面。
我没有提供任何代码,因为网络上有大量的 cURL 教程,但我相信了解计划是什么将使您的工作变得更加容易。
¹另一种(更快,但粗略)的方法是您自己登录,查看您获得的 cookie 的值,然后将其粘贴到您的 scrape 请求中。好处是您不再需要使用 cURL 伪造登录;缺点是,每次使用您的工具之前,必须有人手动登录并向您的工具提供凭据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)