2010-12-01 121 views
5

我想刮我的分销商之一,每个产品的库存数量。他们不知道如何导出这些数据。所以我想知道是否有人能够帮助我指出如何使用PHP来抓取一个网站,而您必须登录才能获取数据?这不是一个安全的SSL网站。PHP网站用安全登录刮

感谢您的任何提示,

克里斯·爱德华兹

+1

您必须提供更多详细信息如何进行登录,例如基本访问身份验证,或者? – ajreal 2010-12-01 18:54:44

回答

12

最简单的方式得到你想要的是利用cURL的链接。 cURL的基本功能是它可以让你配置一个HTTP请求,配置你需要的方式并接收响应。这可以根据您的需要以不同程度的细节完成。

你想做的事情基本上是做一个HTTP请求来获取你想要的页面,并从响应的HTML中删除数据。这可以很容易做到,但在你的情况下,你需要克服一些障碍。

我假设说“必须登录”你的意思是有一个登录表单,你必须先通过才能够抓取任何东西。 cURL可以伪造一个登录,只需要你一点帮助。

首先,您需要使用cURL“提交”登录表单,就像您手动操作一样。为了确保正确无误,您需要在手动提交表单时查看浏览器发出的HTTP请求,并使用cURL构造相同的请求。要详细查看HTTP请求,您可以使用Firebug,Chrome的开发人员工具或绝对精彩的Fiddler debugging proxy

很可能在提交了有效的登录表单后,服务器会向您发送一个cookie,用于在随后的请求中对您进行身份验证。该cookie将成为服务器HTTP响应标头的一部分(Set-Cookie标头)。您需要记住该cookie的价值,并在随后的服务器上包含一个Cookie标头 - 实际上,如果您已登录,您的浏览器就会完全符合** 1的要求。

最后,您可能需要进行多次往返才能找到您的目标。也许你需要刮取的URL并不是事先知道的,你需要刮掉一个“列表”页面来找出你想要刮取的URL的一些可变部分。这可以通过简单地解决问题来解决:首先刮掉“列表”页面,找出你需要的东西,然后刮掉你真正想要的“细节”页面。

我没有提供任何代码,因为网上有大量的cURL教程,但我相信知道计划是什么会让你的工作变得更容易。


¹另一个(更快,但原油的)方式去解决这样做是自己只需登录,看到你得到了cookie的值,只是那粘贴到你刮的要求。好处是你不再需要用cURL伪造登录名;缺点是在每次使用工具之前,有人必须手动登录并为工具提供凭证。

1

有一个叫做卷曲你应该看看它库

link

它可以让你的脚本登录,使用Cookie /会话并从任何页面中抓取内容,您可以设置它的深度应该如何以及是否应该遵循任何重定向等。 您甚至可以使用它来发布数据。这基本上是一个很好的工具。

这里也是一个教程,你可以看到一步一步它是如何工作

http://devzone.zend.com/article/1081

+0

-1。虽然这是正确的,但这并不能帮助他进一步。只是说“使用X”并不能作为一个好的答案。 – user187291 2010-12-01 19:01:31