【发布时间】:2018-09-19 07:26:01
【问题描述】:
我在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);
}
?>
【问题讨论】:
标签: php csv curl web-scraping simple-html-dom