PHP使用curl抓取新聞數(shù)據(jù)

2023-03-08    分類: 網(wǎng)站建設(shè)

在一次做網(wǎng)站的時(shí)候 ,需要抓取一些其他網(wǎng)站的新聞 ,在這里介紹一種使用curl通過(guò)鏈接的方式去獲取這個(gè)頁(yè)面的所有內(nèi)容,然后再通過(guò)正則匹配獲取需要的內(nèi)容。不是所有網(wǎng)站都能抓取需要有頁(yè)面規(guī)律才能去抓取如下圖

這種有規(guī)律的新聞列表 ,不過(guò)新聞的詳情內(nèi)容需要再次單獨(dú)的去抓取,
代碼:
$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);//關(guān)閉直接輸出
$html_data=curl_exec($ch);
curl_close($ch);//關(guān)閉會(huì)話
這里要確認(rèn)是否抓取到了頁(yè)面的內(nèi)容 可以打印出來(lái)看一下
如果沒(méi)有抓取到 要注意一下 頁(yè)面的編碼格式 使用iconv()轉(zhuǎn)換一下內(nèi)容編碼
// $html_data=iconv('gbk', 'utf-8',$html_data);
$regular='#<h1id="activity-name">(.*?)</h1>(.*?)<spanid="post-date">(.*?)<span>(.*?)</span>(.*?)<div class="page-content">(.*?)<div class="text">(.*?)</div>#is';
preg_match_all($regular,$html_data,$connect);//進(jìn)行正規(guī)匹配取得自己要的內(nèi)容
//循環(huán)取出需要的內(nèi)容數(shù)組
foreach($connect as $k =>$var){
if($k==2 || $k==3|| $k==5|| $k==7){
$b= array_merge(array_filter($connect[$k]));
$array[]=$b;
}
}
得到數(shù)據(jù)數(shù)組后 就可以根據(jù)需求去添加數(shù)據(jù)了
內(nèi)容詳情需要抓取就獲取到新聞內(nèi)容頁(yè)的鏈接 同樣使用curl去獲取信息
要注意的就是正則表達(dá)式里面的html需要跟頁(yè)面的格式一樣, 你可以去原網(wǎng)站點(diǎn)右鍵查看源代碼,查看格式, 把要抓取的html復(fù)制下來(lái) ,如果還是有不能抓取的內(nèi)容可能就是格式不正確 有可能有的地方是少空格或者多空格, 這個(gè)時(shí)候直接在標(biāo)簽之間(.*?)。也可以 一點(diǎn)一點(diǎn)的匹配 看具體是哪個(gè)部分沒(méi)有匹配到。

網(wǎng)頁(yè)題目:PHP使用curl抓取新聞數(shù)據(jù)
文章起源:http://www.bm7419.com/news12/242612.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序網(wǎng)站制作、響應(yīng)式網(wǎng)站、Google、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名