Я написал скрипт в php
, чтобы вычистить titles
и links
с веб-страницы и записать их соответственно в CSV-файл.Поскольку я имею дело с разбивкой на страницы, в файле csv остается только содержимое последней страницы, а остальные перезаписываются.Я пробовал с режимом записи w
.Однако, когда я делаю то же самое, используя append a
, я нахожу все данные в этом CSV-файле.
Поскольку данные appending
и writing
делают CSV-файл открытым и закрытым несколько раз (из-замои, возможно, неправильно примененные циклы), сценарий становится менее эффективным и отнимает много времени.
Как я могу сделать то же самое эффективным способом и, конечно, используя (запись) w
режим?
Это я уже написал:
<?php
include "simple_html_dom.php";
$link = "https://stackoverflow.com/questions/tagged/web-scraping?page=";
function get_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$htmlContent = curl_exec($ch);
curl_close($ch);
$dom = new simple_html_dom();
$dom->load($htmlContent);
$infile = fopen("itemfile.csv","a");
foreach($dom->find('.question-summary') as $file){
$itemTitle = $file->find('.question-hyperlink', 0)->innertext;
$itemLink = $file->find('.question-hyperlink', 0)->href;
echo "{$itemTitle},{$itemLink}<br>";
fputcsv($infile,[$itemTitle,$itemLink]);
}
fclose($infile);
}
for($i = 1; $i<10; $i++){
get_content($link.$i);
}
?>