我目前正在创建一个从网页中提取信息的方法。网页如下:
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>
- 检查目标的表单参数、方法和操作url。这将为您提供需要传递的参数、方法(
GET
、POST
等)和请求所需的URL。在我的示例中,我们有两个参数(output_format
和query
),一个端点URL(http://www.example.com/getresults.php
)和一个请求类型(POST
) 设置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);
将响应主体保存到文件中:
file_put_contents('path/to/output/file.csv', $response->getBody());
在(可能)一个单独的控制器/操作中,获取文件的内容并使用
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;
我希望这能帮助你更好地理解这个过程,并能够将各个部分组合在一起。