本文目錄一覽:
- 1、如何用 php 抓取微信文章正文
- 2、PHP 如何獲取到一個網頁的內容
- 3、php獲取網頁源碼內容有哪些辦法
- 4、php獲取指定網頁內容
- 5、用php 寫一段提取某個網頁中的某段的代碼
- 6、網頁正文及內容圖片提取演算法
如何用 php 抓取微信文章正文
很多人也有和你同樣的想法,可以使用curl或file_get_contents。
在這裡以curl為例
1、首先獲得整個url對應的內容
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch,CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_USERAGENT, ‘Sogouspider’);
curl_setopt($ch,CURLOPT_USERAGENT,’Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11′);
$html=curl_exec($ch);
curl_close($ch);
2、從獲$html裡面提取正文內容
$mark=’div class=”rich_media_content ” id=”js_content”‘;
$content=substr($html,strpos($html,$mark)+strlen($mark));
$content=trim(substr($content,0,strpos($content,’script type=”text/javascript”‘)-50));
如對您有幫助,請採納。
PHP 如何獲取到一個網頁的內容
1.file_get_contents
PHP代碼
複製代碼 代碼如下:
?php
$url = “”;
$contents = file_get_contents($url);
//如果出現中文亂碼使用下面代碼
//$getcontent = iconv(“gb2312”, “utf-8”,$contents);
echo $contents;
?
2.curl
PHP代碼
複製代碼 代碼如下:
?php
$url = “”;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用戶檢測的網頁里需要增加下面兩行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.”:”.US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?
3.fopen-fread-fclose
PHP代碼
複製代碼 代碼如下:
?php
$handle = fopen (“”, “rb”);
$contents = “”;
do {
$data = fread($handle, 1024);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
echo $contents;
?
註:
1.
使用file_get_contents和fopen必須空間開啟allow_url_fopen。方法:編輯php.ini,設置
allow_url_fopen = On,allow_url_fopen關閉時fopen和file_get_contents都不能打開遠程文件。
2.使用curl必須空間開啟curl。方法:windows下修改php.ini,將extension=php_curl.dll前面的分
號去掉,而且需要拷貝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安裝curl擴
展。
php獲取網頁源碼內容有哪些辦法
可以參考以下幾種方法:
方法一: file_get_contents獲取
span style=”white-space:pre” /span$url=””;
span style=”white-space:pre” /span$fh= file_get_contents
(”);span style=”white-space:pre” /spanecho $fh;
方法二:使用fopen獲取網頁源代碼
span style=”white-space:pre” /span$url=””;
span style=”white-space:pre” /span$handle = fopen ($url, “rb”);
span style=”white-space:pre” /span$contents = “”;
span style=”white-space:pre” /spanwhile (!feof($handle)) {
span style=”white-space:pre” /span$contents .= fread($handle, 8192);
span style=”white-space:pre” /span}
span style=”white-space:pre” /spanfclose($handle);
span style=”white-space:pre” /spanecho $contents; //輸出獲取到得內容。
方法三:使用CURL獲取網頁源代碼
$url=””;
$UserAgent = ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)’;
$curl = curl_init(); //創建一個新的CURL資源
curl_setopt($curl, CURLOPT_URL, $url); //設置URL和相應的選項
curl_setopt($curl, CURLOPT_HEADER, 0); //0表示不輸出Header,1表示輸出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //設定是否顯示頭信息,1顯示,0不顯示。//如果成功只將結果返回,不自動輸出任何內容。如果失敗返回FALSE
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_ENCODING, ”); //設置編碼格式,為空表示支持所有格式的編碼
//header中「Accept-Encoding: 」部分的內容,支持的編碼格式為:”identity”,”deflate”,”gzip”。
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
//設置這個選項為一個非零值(象 「Location: 「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。
$data = curl_exec($curl);
echo $data;
//echo curl_errno($curl); //返回0時表示程序執行成功
curl_close($curl); //關閉cURL資源,並釋放系統資源
拓展資料
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。
用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
參考資料:PHP(超文本預處理器)-百度百科
php獲取指定網頁內容
一、用file_get_contents函數,以post方式獲取url
?php
$url= ”;
$data= array(‘foo’= ‘bar’);
$data= http_build_query($data);
$opts= array(
‘http’= array(
‘method’= ‘POST’,
‘header’=”Content-type: application/x-www-form-urlencoded\r\n” .
“Content-Length: ” . strlen($data) . “\r\n”,
‘content’= $data
)
);
$ctx= stream_context_create($opts);
$html= @file_get_contents($url,”,$ctx);
二、用file_get_contents以get方式獲取內容
?php
$url=”;
$html= file_get_contents($url);
echo$html;
?
三、用fopen打開url, 以get方式獲取內容
?php
$fp= fopen($url,’r’);
$header= stream_get_meta_data($fp);//獲取報頭信息
while(!feof($fp)) {
$result.= fgets($fp, 1024);
}
echo”url header: {$header} br”:
echo”url body: $result”;
fclose($fp);
?
四、用fopen打開url, 以post方式獲取內容
?php
$data= array(‘foo2’= ‘bar2′,’foo3’=’bar3’);
$data= http_build_query($data);
$opts= array(
‘http’= array(
‘method’= ‘POST’,
‘header’=”Content-type: application/x-www-form-
urlencoded\r\nCookie:cook1=c3;cook2=c4\r\n” .
“Content-Length: ” . strlen($data) . “\r\n”,
‘content’= $data
)
);
$context= stream_context_create($opts);
$html= fopen(‘;id2=i4′,’rb’,false, $context);
$w=fread($html,1024);
echo$w;
?
五、使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經打開了curl擴展
?php
$ch= curl_init();
$timeout= 5;
curl_setopt ($ch, CURLOPT_URL, ”);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents= curl_exec($ch);
curl_close($ch);
echo$file_contents;
?
用php 寫一段提取某個網頁中的某段的代碼
?php
//獲取網頁內容
$str=file_get_contents(”);
//刪除 div class=”chapter”之前的內容
if ($x=strpos($str,’div class=”chapter”‘)) $str=substr($str,$x);
//刪除 !– 章節列表 結束 –之後的內容
if ($x=strpos($str,’!– 章節列表 結束 –‘)) $str=substr($str,0,$x);
//輸出結果
echo $str;
?
網頁正文及內容圖片提取演算法
備份自:
問題: 如何提取任意(尤其是新聞、資訊類)網頁的正文內容,提取與文章內容相關的圖片,源碼可見: extractor.py 。
抓取單個網站網頁內容時通常採用正則匹配的方式,但不同網站之間結構千奇百怪,很難用統一的正則表達式進行匹配。 《基於行塊分布函數的通用網頁正文抽取演算法》 的作者總結了一般從網頁中提取文章正文的方法,提出基於行塊分布的正文抽取演算法,並給出了 PHP 、Java 等實現。這一演算法的主要原理基於兩點:
演算法步驟如下:
以上演算法基本可以應對大部分(中文)網頁正文的提取,針對有些網站正文圖片多於文字的情況,可以採用保留 img 標籤中圖片鏈接的方法,增加正文密度。目前少量測試發現的問題有:1)文章分頁或動態載入的網頁;2)評論長度過長喧賓奪主的網頁。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/296042.html