当前位置 : 首页 > 知识分享 > 网站建设 > PHP使用curl抓取新闻数据

PHP使用curl抓取新闻数据

发布时间:2024年5月26日 00:11 作者:誉新源

在构建一个网站时,有时我们需要从其他网站抓取新闻内容。这里,我将分享一种使用cURL通过链接获取页面内容的方法,然后利用正则表达式匹配所需的信息。请注意,并非所有网站都可被抓取,必须遵循一定的页面结构,比如下面这种有规律的新闻列表。然而,新闻的详细内容通常需要单独抓取。

$url = "http://xxxx"; // 或者 "https://xxxx" 要抓取的链接新闻列表
$url = str_replace('', '', $url);
header("Content-Type: text/html;charset=utf-8");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 忽略https中的"s"
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 不直接输出
$html_data = curl_exec($ch);
curl_close($ch); // 关闭会话

// 确保已抓取到页面内容,可打印查看
// 如果未抓取成功,注意检查页面编码,使用iconv()转换编码
//$html_data = iconv('gbk', 'utf-8', $html_data);

$regular = '#h1id=activity-name(.*?)\/h1(.*?)spanid=post-date(.*?)span(.*?)pclass=page-content(.*?)pclass=text(.*?)\/p#is';
preg_match_all($regular, $html_data, $connect); // 正规匹配获取所需内容

// 循环提取所需内容数组
foreach ($connect as $k => $var) {
    if ($k == 2 || $k == 3 || $k == 5 || $k == 7) {
        $b = array_merge(array_filter($connect[$k]));
        $array[] = $b;
    }
}

// 得到数据数组后,根据需求添加数据
// 若需抓取详细内容,获取新闻详情页链接,同样用cURL获取信息

// 正则表达式的HTML需与页面格式一致,可通过浏览器右键查看源代码来检查格式
// 将要抓取的HTML复制并尝试匹配,若仍有无法抓取的部分,可能是格式问题,如空格差异
// 可逐步匹配,找出未匹配的部分

// 誉新源科技提供网站开发定制服务,基于LINUX + PHP + MYSQL框架构建,欢迎咨询我们的建站热线:400-870-3094

相关文章

相关案例