无法在csv文件中写入结果

时间:2018-09-17 05:34:59

标签: php csv curl web-scraping

我已经在php中编写了一个脚本,以获取链接并将其从Wikipedia主页上写入csv文件中。该脚本确实会相应地获取链接。但是,我无法将填充的结果写入csv文件中。当我执行脚本时,它什么也不做,也没有错误。任何帮助将不胜感激。

到目前为止,我的尝试:

<?php
include "simple_html_dom.php";
$url = "https://en.wikipedia.org/wiki/Main_Page";
function fetch_content($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    $htmlContent = curl_exec($ch);
    curl_close($ch);
    $dom = new simple_html_dom();
    $dom->load($htmlContent);
    $links = array();
    foreach ($dom->find('a') as $link) {
        $links[]= $link->href . '<br>';
    }
    return implode("\n", $links);

    $file = fopen("itemfile.csv","w");
    foreach ($links as $item) {
        fputcsv($file,$item);
    }
    fclose($file);
}
fetch_content($url);
?>

2 个答案:

答案 0 :(得分:3)

1。您正在函数中使用return,这就是为什么文件没有写任何内容的原因,因为此后代码停止执行。

2。使用以下代码简化您的逻辑:-

$file = fopen("itemfile.csv","w");
foreach ($dom->find('a') as $link) {
  fputcsv($file,array($link->href));
}
fclose($file);

因此完整的代码必须为:-

<?php

   //comment these two lines when script started working properly
    error_reporting(E_ALL);
    ini_set('display_errors',1); // 2 lines are for Checking and displaying all errors
    include "simple_html_dom.php";
    $url = "https://en.wikipedia.org/wiki/Main_Page";
    function fetch_content($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        $htmlContent = curl_exec($ch);
        curl_close($ch);
        $dom = new simple_html_dom();
        $dom->load($htmlContent);
        $links = array();
        $file = fopen("itemfile.csv","w");
        foreach ($dom->find('a') as $link) {
            fputcsv($file,array($link->href));
        }
        fclose($file);
    }
    fetch_content($url);
?>

答案 1 :(得分:0)

之所以无法写入文件,是因为您return在执行该代码之前就退出了功能。