我正在尝试计算我的一个分销商每种产品的库存数量。他们不知道如何导出此数据。所以我想知道是否有人可以帮助我指出正确的方向,如何用PHP抓取你必须登录才能获得数据的网站?它不是一个使用SSL的安全站点。
谢谢你的建议,
克里斯·爱德华兹
发布于 2010-12-02 04:02:01
获得所需位置的最简单方法是利用cURL。cURL的基本特性是,它允许您发出HTTP请求,并根据需要进行配置并接收响应。这可以根据您的需要以不同程度的细节来完成。
您想要做的基本上是发出一个HTTP请求来获取您想要的页面,并从响应的HTML中抓取数据。这可能很容易做到,但在您的情况下,您需要克服一些障碍。
我假设你说“必须登录”的意思是,你必须通过一个登录表单,然后才能抓取任何东西。在你的帮助下,cURL可以伪造一个登录。
首先,您需要使用cURL“提交”登录表单,就像手动操作一样。为了确保正确,您需要在手动提交表单时查看浏览器发出的HTTP请求,并使用cURL构造相同的请求。要查看HTTP请求的详细信息,您可以使用Firebug、Chrome的开发工具或绝对神奇的Fiddler debugging proxy。
很可能在提交有效的登录表单后,服务器会向您发送一个cookie,用于在后续请求中验证您的身份。此cookie将成为服务器的HTTP响应的标头(Set-Cookie标头)的一部分。您将需要记住该cookie的值,并在后续对服务器的抓取中包含一个Cookie头--本质上,您所做的正是您的浏览器在登录**时所做的事情。
最后,您可能需要进行多次往返才能找到您的目标。也许你需要抓取的URL事先并不知道,你需要抓取一个“列表”页面来找出你想抓取的URL的某些可变部分。这可以通过分步骤解决问题来解决:首先刮掉“列表”页面,找出你需要的,然后刮掉你真正想要的“详细信息”页面。
我没有提供任何代码,因为网上有大量的cURL教程,但我相信知道计划会让你的工作变得容易得多。
?另一种(更快,但粗糙)的方法是自己登录,查看你得到的cookie的价值,然后将其粘贴到你的抓取请求中。优点是您不再需要使用cURL伪造登录;缺点是在每次使用您的工具之前,必须有人手动登录并向您的工具提供凭据。
发布于 2010-12-02 02:52:36
有一个名为curl的库,你应该去查一查
link
它允许你的脚本登录,使用cookies/会话和抓取它所跟随的任何页面的内容,你可以设置它应该走的深度,以及它是否应该遵循任何重定向等,你甚至可以使用它来发布数据。基本上,它是一个很棒的工具。
这里还有一个指向教程的链接,您可以在其中一步一步地了解它是如何工作的
http://devzone.zend.com/article/1081
https://stackoverflow.com/questions/4327908
复制相似问题