當前位置:
首頁 >
php每天扒取当天新闻_php 抓取新浪新闻的程序代码
發布時間:2025/3/21
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
php每天扒取当天新闻_php 抓取新浪新闻的程序代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Jquery中文網?>
腳本編程 ?>
php ?>
正文 php 抓取新浪新聞的程序代碼
php 抓取新浪新聞的程序代碼
發布時間:2016-10-09 ? 編輯:www.jquerycn.cn
jquery中文網為您提供php 抓取新浪新聞的程序代碼等資源,歡迎您收藏本站,我們將為您提供最新的php 抓取新浪新聞的程序代碼資源
抓取就是采集了,今天因為我們要做一個實時采集新浪新聞的功能,下面整理了一個非常了得的php 抓取新浪新聞的程序,我們來看看。
首先,需要下載一個simple_html_dom第三方擴展庫,具體下載方式和使用詳情可以查看:simple_html_dom的使用.
需要環境支持file_get_contents()函數和curl的支持,具體代碼如下:
<?php ? function?timingimg($url,$dirname,$interval){ ??ignore_user_abort();?//瀏覽器關閉,程序繼續執行 ??set_time_limit(0);//忽略到默認30秒超時 ??$interval?=?empty($interval)?3600:$interval; ??$dirname?=?empty($dirname)?'news/':$dirname; ??if(empty($url)){ ????die('請輸入目標網址!!!'); ??} ??do{ ????$arr?=?loadimg($url,$dirname); ?return?$arr;????//返回抓取內容所保存的路徑 ?sleep($interval); ?die; ??}while(true); } ? ? /** *獲取所有新聞鏈接 *參數?$url??新聞列表地址 *參數?$dirname?新聞圖片保存路徑 *?返回?二維數組??所有新聞記錄 */ function?loadimg($url,$dirname){? ??set_time_limit(0); ??include_once('simple_html_dom.php'); ??$ch?=?curl_init(); ??curl_setopt($ch,CURLOPT_URL,$url); ??curl_setopt($ch,CURLOPT_HEADER,false); ??curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); ??$output?=?curl_exec($ch); ??curl_close($ch); ??$html?=?new?simple_html_dom(); ??$html->load($output); ??$images?=?array(); ??$arr?=?array(); ??foreach($html->find('li??a')?as?$element){ ? ????if(?preg_match('#^http:\/\/tech\.sina\.com\.cn\/it\/[\d]{4}\-[\d]{1,2}\-[\d]{1,2}\/[\d] \.shtml$#i',$element->href)){ ???array_push($images,$element->href); ??} ?} ??$images?=?array_unique($images); ?? ??sort($images); ??for($i=0;$i<10;$i ){??//只抓取10條記錄 ???$arr[]?=?getcontent($images[$i],$dirname); ?} ??return?$arr;? } ? /** * * *?抓取單個新聞內容 *參數??$url?新聞頁面地址 *參數??$dirname?圖片保存路徑 *返回?一個新聞記錄?一維數組 */ function?getcontent($url,$dirname){ ?include_once('simple_html_dom.php'); ?$html?=?new?simple_html_dom(); ?$data?=?file_get_contents($url); ?$html->load($data);?? ????$arr?=?array(); ????foreach($html->find('h1#artibodyTitle')?as?$element){ ????$arr['title']=?@iconv('gbk','utf-8',?$element->innertext); ; ???} ???$str?=?''; ???foreach($html->find('div#artibody?p')?as?$element){ ????$str.=?$element;?????? ???} ???$arr['content']?=?$str; ???foreach($html->find('div.img_wrapper?img')?as?$element){ ??????$arr['alt']?=$element->alt; ??????$data?=?file_get_contents($element->src); ??????$info?=?getimagesize($element->src);//get?image?information ??????switch($info[2]){ ????????case?1: ???????$str?=?'gif'; ???????break; ????????case?2: ???????$str?=?'jpg'; ???????break; ????????case?3: ???????$str?=?'png'; ???????break; ????????default: ???????continue; ???????break; ??????} ??????$filename?=?time().rand(1,999999).'.'.$str;? ??????if(!is_dir($dirname)){ ????????mkdir($dirname,0777,true); ??????} ??????$fp?=?fopen($dirname.$filename,'w');???????????? ??????fwrite($fp,$data); ??????fclose($fp); ??????$arr['img']?=?$dirname.$filename; ?????? ????} ???return?$arr; } ?>如果大家有更好的建議,歡迎提出來
[關閉]
總結
以上是生活随笔為你收集整理的php每天扒取当天新闻_php 抓取新浪新闻的程序代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cd返回上一 git_git统计代码量脚
- 下一篇: php数字导出excel表格中_php怎