从网页获取生成的文件

时间:2013-12-10 17:20:22

标签: php zend-framework

我目前正在创建一种从网页中提取信息的方法。 该网页如下:

http://www.treasurydirect.gov/instit/annceresult/annceresult_query.htm

我的问题是我不想直接从页面中提取信息,而是希望使用给定的信息来生成包含信息的文件,自动生成的文件是CSV或XML并且拥有全部我需要的信息,所以我打算对该文件进行提取。

所以,最后,我正在寻找一种方法来进入我之前提供的链接;生成并下载包含该信息的文档;并将其导入php以提取信息。

我正在尝试使用PHP而不是Zend框架。

PD:对于解释上的任何困难感到抱歉,英语不是我的主要语言(实际上我讲的是西班牙语)。

谢谢!

1 个答案:

答案 0 :(得分:0)

我将向您提供有关如何实现目标的一般指示。这是我的示例场景(这只是一个简单的示例,提供的代码不会执行任何操作):

目标网站: http://www.example.com

目标表格:

<form action="/getresults.php" method="POST">
    Search term: <input type="text" name="query" value="" />
    Output type:
    <select name="output_format">
        <option value="CSV">CSV</option>
        <option value="JSON">JSON</option>
        <option value="HTML">HTML</option>
    </select>
    <input type="submit" value="Search" />
</form>
  1. 检查目标的表单参数,方法和操作URL。这将为您提供需要传递的参数,方法(GETPOST等)以及您提出请求所需的网址。在我的示例中,我们有两个参数(output_formatquery),一个端点网址(http://www.example.com/getresults.php)和一个请求类型(POST
  2. 设置Zend_Http_Client

    $client = new Zend_Http_Client('http://www.example.com/getresults.php');
    // set your parameters
    $client->setParameterPost('output_format', 'CSV');
    $client->setParameterPost('query', 'My fancy search term');
    // POST request
    $response = $client->request(Zend_Http_Client::POST);
    
  3. 将响应正文保存到文件中:

    file_put_contents('path/to/output/file.csv', $response->getBody());
    
  4. 在(大概)单独的控制器/操作中,获取文件的内容并使用fgetcsv进行迭代:

    $rows = array()
    if (($handle = fopen("path/to/output/file.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            array_push($rows, $data);
        }
        fclose($handle);
    }
    print_r($data);die;
    
  5. 我希望这可以帮助您更好地理解这个过程,并且您可以将各个部分放在一起。

相关问题