我目前正在开展一个从网站上抓取数据的项目。我已经使用以下代码删除了所需的所有数据,但是我想知道将这些数据输出到逗号分隔的CSV文件中的最简单方法是什么。我本来打算把所有这些都移到一张桌子然后以这种方式导出,但我知道如果这是最有效的方法,那就不知道了。
<?php
$html = file_get_contents("http://www.zillow.com/homes/for_sale/Alamance-County-NC/2117_rid/36.181671,-78.943291,35.912411,-79.835243_rect/10_zm/1_fr/");
$DOM = new DOMDocument();
libxml_use_internal_errors(true);
$DOM->loadHTML($html);
$finder = new DomXPath($DOM);
$classname = 'property-address';
$nodes = $finder->query("//*[contains(@class, '$classname')]");
$csv_values = array();
foreach ($nodes as $node) {
$csv_values[] = $node->nodeValue;
}
$handle = fopen("C:\Users\Stephen\Documents\WorkCSV\work.csv", "w");
if (false !== $handle) {
fputcsv($handle, $csv_values);
}
?>
答案 0 :(得分:0)
您可以使用fputcsv
和iterator_to_array
:
$nodes = $finder->query("//*[contains(@class, '$classname')]");
$handle = fopen("/path/to/file.csv", "w");
if (false !== $handle) {
fputcsv($handle, iterator_to_array($nodes));
}
或者像这样:
$csv_values = array();
foreach ($nodes as $node) {
$csv_values[] = $node->nodeValue;
}
$handle = fopen("/path/to/file.csv", "w");
if (false !== $handle) {
fputcsv($handle, $csv_values);
}
在Windows平台上,请小心转义文件路径中使用的反斜杠,或使用正斜杠。
$handle = fopen("c:\\folder\\file.csv", "r");
答案 1 :(得分:0)
我能够使用Dave提供的代码将所有数据放入数组中。另外,在fopen我使用反斜杠&#34; \&#34; ,并切换到正斜杠&#34; /&#34;我能够产生一个错误,我可以使用它来导出到CSV。