正在从网页获取生成的文件


Fetching generated file from webpage

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

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

我的问题是,我不想直接从页面中提取信息,相反,我想使用给定的来生成一个包含信息的文件,自动生成的文件是CSV或XML,并且包含了我需要的所有信息,所以我计划对该文档进行提取。

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

我正在尝试使用Zend框架上的PHP来实现这一点。

PD:很抱歉在解释上有任何困难,英语不是我的主要语言(实际上我会说西班牙语)。

谢谢!

我将为您提供一些关于如何实现目标的一般指导。以下是我的示例场景(这只是一个虚构的例子,提供的代码不会做任何事情):

目标站点: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等)和请求所需的URL。在我的示例中,我们有两个参数(output_formatquery),一个端点URL(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;
    

我希望这能帮助你更好地理解这个过程,并能够将各个部分组合在一起。