如何在网站上获取数据?

时间:2009-09-24 08:23:52

标签: php screen-scraping

所以,经常,我会检查我的帐户是否有不同的数字。例如,我的联盟帐户:我检查现金增加。

我想编写一个脚本,它可以登录所有这些网站,然后为我获取金钱值并将其显示在一个页面上。我该如何编程呢?

6 个答案:

答案 0 :(得分:3)

你应该看看curl。 您应该能够生成一个可以轻松检索某个网页的脚本。

另请查看simplexmldom,它可以帮助您从(X)HTML文件中提取信息。

同样Zend_Http可能是卷曲的好选择。

干杯

答案 1 :(得分:1)

嗯,有点模糊的问题......我建议采取以下步骤:

  • 通过POST发送登录凭据
  • 抓取并解析回复

  • 为您要检查的所有相关帐户/网站执行此操作

如果您遇到特定问题,请随时评论此答案

编辑:我同意RageZ的技术方法。 curl也是我的'首选武器'...... ^^

HTH

ķ

答案 2 :(得分:0)

首先,检查您要登录的服务是否有API 它更容易,因为这是一种专门用于获取数据并在其他应用程序中利用它们的格式。

如果有API,您可以查看它的文档,了解如何检索和使用数据。

如果没有,则需要废弃HTML页面 您可以先看看Curl:http://php.net/curl
我们的想法是通过发送loggin post请求并获取给定数据来模拟您自己对网站的访问。

检索页面的数据后,您可以使用dom等工具解析它们。 http://php.net/dom

答案 3 :(得分:0)

使用TestPlan,它被设计为一个Web自动化系统,使这些任务变得非常简单。

答案 4 :(得分:0)

如果我是你,我真的会看看Snoopy,它比你在PHP脚本中使用curl更友好。这是一些sample code

<?php
    /*
    You need the snoopy.class.php from 
    http://snoopy.sourceforge.net/
    */

    include("snoopy.class.php");

    $snoopy = new Snoopy;

    // need an proxy?:
    //$snoopy->proxy_host = "my.proxy.host";
    //$snoopy->proxy_port = "8080";

    // set browser and referer:
    $snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
    $snoopy->referer = "http://www.jonasjohn.de/";

    // set some cookies:
    $snoopy->cookies["SessionID"] = '238472834723489';
    $snoopy->cookies["favoriteColor"] = "blue";

    // set an raw-header:
    $snoopy->rawheaders["Pragma"] = "no-cache";

    // set some internal variables:
    $snoopy->maxredirs = 2;
    $snoopy->offsiteok = false;
    $snoopy->expandlinks = false;

    // set username and password (optional)
    //$snoopy->user = "joe";
    //$snoopy->pass = "bloe";

    // fetch the text of the website www.google.com:
    if($snoopy->fetchtext("http://www.google.com")){ 
        // other methods: fetch, fetchform, fetchlinks, submittext and submitlinks

        // response code:
        print "response code: ".$snoopy->response_code."<br/>\n";

        // print the headers:

        print "<b>Headers:</b><br/>";
        while(list($key,$val) = each($snoopy->headers)){
            print $key.": ".$val."<br/>\n";
        }

        print "<br/>\n";

        // print the texts of the website:
        print "<pre>".htmlspecialchars($snoopy->results)."</pre>\n";

    }
    else {
        print "Snoopy: error while fetching document: ".$snoopy->error."\n";
    }
?>

答案 5 :(得分:0)

使用VietSpider Web数据提取器。

VietSpider Web Data Extractor:软件从网站(Data Scraper)抓取数据,格式化为XML标准(Text,CDATA),然后存储在关系数据库中.Product支持各种RDBM,如Oracle,MySQL,SQL Server ,H2,HSQL,Apache Derby,Postgres ... VietSpider Crawler支持Session(登录,通过表单输入查询),多重下载,JavaScript处理,代理(以及通过自动扫描网站代理的多代理),...

http://binhgiang.sourceforge.net下载