當前位置:首頁 » 編程語言 » php網站抓取

php網站抓取

發布時間: 2024-06-11 12:09:45

php 用CURL 抓取錯誤提示:Recv failure: Connection was aborted 怎麼解決 求助各位大神

一、原因分析

web站點目前主要分為http和https兩種協議,其中https類型的網站都是通過ssl協議+http協議的,是目前最安全的網站協議,訪問此類網站的時候,會走ssl協議,驗證訪問者的證書,檢測是否安全。

通過curl訪問此類網站也是如此流程,但是curl中需要添加相應的參數,繞過ssl證書的驗證,才可以正常訪問,如出現此錯誤的一般原因是沒有加此參數。

CURLOPT_SSL_VERIFYHOST的值

設為0表示不檢查證書

設為1表示檢查證書中是否有CN(common name)欄位

設為2表示在1的基礎上校驗當前的域名是否與CN匹配。

二、解決方案

如果出現:

PHP Notice: curl_setopt():

CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in

一般原因是你設置了 curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, true );

改成curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, 2 );就行了。

(1)php網站抓取擴展閱讀

PHP其他原因錯誤:

1、錯誤現象

在用curl進行模擬調用時,curl接收內容會出現"Empty reply from server" 和 "Recv failure: Connection was reset"的錯誤。

2、解決方案

經過對apache的error_log進行跟蹤,出現錯誤"Connection reset by peer: core_output_filter: writing data to the network"

修改httpd.conf,在虛擬主機上添加如下內容:

EnableSendfile off

EnableMMAP off

修改後"Empty reply from server"錯誤消失。

Ⅱ PHP怎樣抓取網頁代碼中動態顯示的數據

你是想抓別人網頁上ajax動態載入的數據吧?

1、要找到它的ajax載入的URL地址

2、利用PHP的file_get_contents($url)函數讀取那個url地址。

3、對抓取到的內容進行分析或正則過濾。

Ⅲ php獲取網頁源碼內容有哪些辦法

可以參考以下幾種方法:

方法一: file_get_contents獲取

<span style="white-space:pre"></span>$url="http://www..com/";

<span style="white-space:pre"></span>$fh= file_get_contents

('http://www.hxfzzx.com/news/fzfj/');<span style="white-space:pre"></span>echo $fh;

拓展資料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。

用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

Ⅳ 使用PHP的cURL庫進行網頁抓取

使用模明仿PHP的cURL庫可以簡單和有效地去抓網頁 你只需要運行一個腳本 然後分析一下你所抓取的網頁 然後就可以以程序的方式得到你想要的數據了 無論是你想從從一個鏈接上取部分數據 或是取一個XML文件並把其導入資料庫 那怕就是簡單的獲取網頁內容 cURL 是一個功能強大的PHP庫 本文主要講述如果使用這個PHP庫

啟用 cURL 設置

首先 我們得先要確定我們的PHP是否開啟了這個庫 你可以通過使用php_info()函數來得到這一信息

﹤?phpphpinfo();?﹥

如果你可以在網頁上看到下面的輸出 那麼表示cURL庫已被開啟

如果你看到的話 那麼你需要設置你的PHP並開啟這個庫 如果你是在Windows平台下 那麼非常簡單 你需要改一改你的php ini文件的設置 找到php_curl dll 並取消前面的分號注釋就行了 如下所示

//取消下在的注釋extension=php_curl dll

如果你旦纖是在Linux下面 那麼 你需要重新編譯你的PHP了 編輯時 你需要打開編譯參數——在configure命令上加上 –with curl 參數

一個小示例

如果一切就緒 下面是一個小常式

﹤?php// 初始化一個 cURL 對象$curl = curl_init();

// 設置你需要抓取的URLcurl_setopt($curl CURLOPT_URL //cocre );

// 設置headercurl_setopt($curl CURLOPT_HEADER );

// 設置cURL 參數 要求結果保存到字元串中還是輸出到屏幕上槐鏈 curl_setopt($curl CURLOPT_RETURNTRANSFER );

// 運行cURL 請求網頁$data = curl_exec($curl);

// 關閉URL請求curl_close($curl);

// 顯示獲得的數據var_mp($data);

如何POST數據

上面是抓取網頁的代碼 下面則是向某個網頁POST數據 假設我們有一個處理表單的網址// example /sendSMS php 其可以接受兩個表單域 一個是電話號碼 一個是簡訊內容

﹤?php$phoneNumber = ;$message = This message was generated by curl and php ;$curlPost = pNUMBER= urlencode($phoneNumber) &MESSAGE= urlencode($message) &SUBMIT=Send ;$ch = curl_init();curl_setopt($ch CURLOPT_URL // example /sendSMS php );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_POST );curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);$data = curl_exec();curl_close($ch);?﹥

從上面的程序我們可以看到 使用CURLOPT_POST設置HTTP協議的POST方法 而不是GET方法 然後以CURLOPT_POSTFIELDS設置POST的數據

關於代理伺服器

下面是一個如何使用代理伺服器的示例 請注意其中高亮的代碼 代碼很簡單 我就不用多說了

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPPROXYTUNNEL );curl_setopt($ch CURLOPT_PROXY fakeproxy : );curl_setopt($ch CURLOPT_PROXYUSERPWD user:password );$data = curl_exec();curl_close($ch);?﹥ 關於SSL和Cookie

關於SSL也就是HTTPS協議 你只需要把CURLOPT_URL連接中的//變成//就可以了 當然 還有一個參數叫CURLOPT_SSL_VERIFYHOST可以設置為驗證站點

關於Cookie 你需要了解下面三個參數

CURLOPT_COOKIE 在當面的會話中設置一個cookie

CURLOPT_COOKIEJAR 當會話結束的時候保存一個Cookie

CURLOPT_COOKIEFILE Cookie的文件

HTTP伺服器認證

最後 我們來看一看HTTP伺服器認證的情況

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPAUTH CURLAUTH_BASIC);curl_setopt(CURLOPT_USERPWD [username]:[password] )

$data = curl_exec();curl_close($ch);?﹥

關於其它更多的內容 請參看相關的cURL手冊 lishixin/Article/program/PHP/201311/21491

Ⅳ PHP抓取網頁指定內容

<?php
/*
* 如下: 方法有點笨
* 抓取網頁內容用 PHP 的正則
* 用JS每隔5分鍾刷新當前頁面---即重新獲取網頁內容
*
* 註: $mode中--<title></title>-更改為所需內容(如 $mode = "#<a(.*)</a>#";>獲取所有鏈接)
*
* window.location.href="http://localhost//refesh.php";中的http://localhost//refesh.php
* 更改為自己的URL----作用:即刷新當前頁面
*
* setInterval("ref()",300000);是每隔300000毫秒(即 5 * 60 *1000 毫秒即5分鍾)執行一次函數 ref()
*
* print_r($arr);輸出獲得的所有內容 $arr是一個數組 可根據所需輸出一部分(如 echo $arr[1][0];)
* 若要獲得所有內容 可去掉
* $mode = "#<title>(.*)</title>#";
if(preg_match_all($mode,$content,$arr)){
print_r($arr);
echo "<br/>";
echo $arr[1][0];
}
再加上 echo $content;
*/
$url = "http://www..com"; //目標站
$fp = @fopen($url, "r") or die("超時");

$content=file_get_contents($url);
$mode = "#<title>(.*)</title>#";
if(preg_match_all($mode,$content,$arr)){
//print_r($arr);
echo "<br/>";
echo $arr[1][0];
}
?>
<script language="JavaScript" type="text/javascript">
<--
function ref(){
window.location.href="http://localhost//refesh.php";
}
setInterval("ref()",300000);
//-->
</script>

Ⅵ 如何用PHP抓取此鏈接的動態視頻地址

看你是什麼視頻,
如果是一些視頻網站像優酷土豆之類的,把滑鼠放到正在播放的視頻上,就會在右邊滑出分享菜單,根據你的需求復制相應格式的視頻地址代碼就行。
如果是一些小網站上自己上傳在主機空間的小視頻,你可以用IE打開,在確定你的電腦中裝了迅雷的情況下,把滑鼠放到視頻上,就會有迅雷的下載提示,點擊下載,然後在確認對話框中,你會看到一個視頻的地址,復制它就可以。
另外一個辦法就是在頁面空白的地址點擊右鍵,查看頁面源代碼,然後在代碼中找到<embed>這一對標簽,然後這對標簽里的src="",在src後面的一對引號是的地址就是視頻地址,你可以復制到瀏覽器來打開試試。

Ⅶ php,在本地使用file_get_contents和cur抓取網頁l特別慢是什麼原因

有三個原因:

第一個主因是網速,雖然你使用的是電信6M寬頻,但網速還是無法與虛擬伺服器相比,虛擬伺服器所限制的網速一般只是上傳速度,下載的速度並不限制,沒有誰使用虛擬伺服器去大量下載數據。

另外,虛擬主機再怎麼差,連接到機房的到底是光纖而不是寬頻,這一點毋庸置疑。

另一個原因是DNS,一個伺服器提供商,都會在機房裡設置自己的DNS伺服器,這樣會大大提高伺服器的解析速度,同時還對外提供各種DNS解析服務,所以,虛擬主機的DNS速度,不是個人寬頻可以比擬的,而個人電腦卻需要使用寬頻資源解析DNS。

第三個原因就是路由,個人寬頻不是主幹網,一般的空間商所接入的光纖卻盡量與國家光纖主幹距離很近,路由延遲極短,個個的寬頻卻完全不是一個概念,中間的路由延遲也是個可觀的數字。

熱點內容
hd5加密 發布:2024-07-27 13:58:52 瀏覽:435
pc雲伺服器怎麼使用 發布:2024-07-27 13:51:01 瀏覽:673
的世界java下載 發布:2024-07-27 13:43:55 瀏覽:493
動圖壓縮軟體 發布:2024-07-27 13:41:22 瀏覽:65
葯房電腦虛擬伺服器 發布:2024-07-27 13:32:54 瀏覽:649
消費券腳本 發布:2024-07-27 13:23:13 瀏覽:777
ip電腦伺服器未響應如何處理 發布:2024-07-27 13:22:53 瀏覽:382
m6傳祺2021款買哪個配置 發布:2024-07-27 13:22:04 瀏覽:462
emojijava 發布:2024-07-27 12:57:07 瀏覽:157
編程培訓福州 發布:2024-07-27 12:28:06 瀏覽:876