我目前正在创建一种从网页中提取信息的方法。 该网页如下:
http://www.treasurydirect.gov/instit/annceresult/annceresult_query.htm
我的问题是我不想直接从页面中提取信息,而是希望使用给定的信息来生成包含信息的文件,自动生成的文件是CSV或XML并且拥有全部我需要的信息,所以我打算对该文件进行提取。
所以,最后,我正在寻找一种方法来进入我之前提供的链接;生成并下载包含该信息的文档;并将其导入php以提取信息。
我正在尝试使用PHP而不是Zend框架。
PD:对于解释上的任何困难感到抱歉,英语不是我的主要语言(实际上我讲的是西班牙语)。谢谢!
答案 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>
GET
,POST
等)以及您提出请求所需的网址。在我的示例中,我们有两个参数(output_format
和query
),一个端点网址(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;
我希望这可以帮助您更好地理解这个过程,并且您可以将各个部分放在一起。