使用登录进行PHP屏幕刮擦

时间:2009-11-11 20:20:58

标签: php screen-scraping

寻找解决方案,我找到了不同的方法。有些使用正则表达式,有些使用DOM脚本或其他东西。

我想去网站,登录,填写表格,然后检查表格是否已发送。登录部分是我找不到任何东西的部分。

任何人都知道一种简单的方法吗?

5 个答案:

答案 0 :(得分:3)

我同意莱斯。 Curl + Charles(或Fiddler,Firefox的Tamper Data扩展,wireshark等)是我一直这样做的方式。我发现的一个技巧是某些网站需要三个步骤:

  1. 首先使用GET请求点击登录页面以获取任何会话ID,cookie和/或必填字段(例如.net站点具有__VIEWSTATE和__EVENTVALIDATION)。
  2. 获得这些值后,即可发布到登录页面
  3. 最后,请求您追求的任何资源。
  4. 不要计划curl的cookie jar和cookie文件有很大帮助。您可能最好使用简单的正则表达式从头中解析会话ID和cookie。

    希望这有帮助!

答案 1 :(得分:1)

如果您需要执行大量GUI工作,那么使用某种可编写脚本的浏览器可能会更好。如果您需要使用PHP,请查看curl:http://us2.php.net/curl

答案 2 :(得分:1)

我通常做的是启动charles浏览器中的登录过程并记录原始请求。复制+粘贴请求并将其投放到fopencurl(根据回复进行一些小调整)。

答案 3 :(得分:0)

您可能想看看Perl的LWP库(我知道它不是PHP,但它对于屏幕抓取,Web单元测试等非常有用):

答案 4 :(得分:0)

我在这方面有相当多的经验。我曾经使用Curl,但使用它并不好玩。特别是很多时候站点交换XSRF令牌,或传递隐藏变量,或设置各种cookie。使用Curl跟踪所有这些变得困难。至少对于我来说。

然后我探索了Selenium并且我喜欢它。有两件事 - 1)安装Selenium IDE(仅适用于Firefox)。 2)安装Selenium RC Server

启动Selenium IDE后,转到您尝试自动执行的站点,并开始记录您在站点上执行的事件。将其视为在浏览器中录制宏。然后,您将获得所需语言的代码输出。

您知道Browsermob使用Selenium进行负载测试以及在浏览器上自动执行任务。

我已经上传了一段我曾经做过的ppt。这可以为您节省大量时间 - http://www.4shared.com/get/tlwT3qb_/SeleniumInstructions.html

在上面的链接中选择常规下载选项。