无法在csv文件中写入结果

问题描述 投票:1回答:2

我在php编写了一个脚本来获取链接并将它们写在维基百科主页的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);
?>
php csv curl web-scraping
2个回答
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);
?>

0
投票

文件没有被写入的原因是因为你甚至可以执行该代码之前的return

© www.soinside.com 2019 - 2024. All rights reserved.