ZH乳酪 PHP抓取網頁方法總結

2021-09-07 02:55:40 字數 3014 閱讀 5207

from:

在做一些天氣預報或者rss訂閱的程式時,往往需要抓取非本地檔案,一般情況下都是利用php模擬瀏覽器的訪問,通過http請求訪問url位址,然後得到html源**或者xml資料。

1. file()函式

2. file_get_contents()函式

4.curl方式

5. fsockopen()函式 socket模式

6. 使用外掛程式(如:

二、php解析html或xml**主要方式:

1. 正規表示式

2. php domdocument物件

3. 外掛程式(如:php ****** html dom parser)

php抓取頁面

1. file()函式

<?php

$url='';

$lines_array=file($url

);$lines_string=implode('',$lines_array

);echo

htmlspecialchars($lines_string

);?>

2. file_get_contents()函式

使用file_get_contents和fopen必須空間開啟 allow_url_fopen。

方法:編輯php.ini,設定 allow_url_fopen = on,allow_url_fopen關閉時fopen和file_get_contents都不能開啟遠端檔案。

<?php

$url='';

$lines_string=file_get_contents($url

);echo

htmlspecialchars($lines_string

);?>

3. fopen()->fread()->fclose()模式

<?php

$url='';

$handle=fopen($url,"rb");

$lines_string="";

do$lines_string.=$data;}

while(true

);fclose($handle

);echo

htmlspecialchars($lines_string

);?>

4. curl方式

使用curl必須空間開啟curl。

方法:windows下修改php.ini,將 extension=php_curl.dll前面的分號去掉,而且需要拷貝ssleay32.dll和libeay32.dll到c:\windows \system32下;

linux下要安裝curl擴充套件。

<?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

);$lines_string=curl_exec($ch

);curl_close(

$ch);

echo

htmlspecialchars($lines_string

);?>

5. fsockopen()函式 socket模式

socket模式能否正確執行,也跟伺服器的設定有關係,具體可以通過phpinfo檢視伺服器開啟了哪些通訊協議,比如我的本地php socket沒開啟http,只能使用udp測試一下了。

<?php

$fp = fsockopen("udp:", 13, $errno, $errstr

);if (!$fp

) else

?>

6. 外掛程式

網上應該有比較多的外掛程式,snoopy外掛程式是在網上搜到的,有興趣的可以研究一下。

php解析xml(html)

1. 正規表示式:

<?php

$url='';

$lines_string=file_get_contents($url

);eregi('(.*)',$lines_string,$title

);echo

htmlspecialchars($title[0]);

?>

2. php domdocument()物件

如果遠端的html或xml存在語法錯誤,php在解析dom的時候會報錯。(關於loadhtmlfile的問題,在我整理的前幾篇blog中有提到.)

<?php

$url='';

$html=new

domdocument();

$html->loadhtmlfile($url

);$title=$html->getelementsbytagname('title');

echo

$title->item(0)->nodevalue;

?>

3. 外掛程式

本文以php ****** html dom parser為例,進行簡單介紹,******_html_dom的語法類似jquery,它讓php操作dom,就像使用jquery操作dom一樣的簡單。

<?php

$url='';

include_once('../******htmldom/******_html_dom.php');

$html=file_get_html($url

);$title=$html->find('title');

echo

$title[0]->plaintext;

?>

ZH乳酪 PHP安裝擴充套件imagick

明明幾個簡單命令就能搞定,但是按照網上的方法就是不行,弄了一天,最後發現只需要兩行命令,而且不需要修改什麼php.ini sudo apt get install php5 imagick sudo service apache2 reload 網上的其他方法 sudo apt get update...

ZH乳酪 PHP的cURL庫

使用php的curl庫可以簡單和有效地去抓網頁。你只需要執行乙個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論 是你想從從乙個鏈結上取部分資料,或是取乙個xml檔案並把其匯入資料庫,那怕就是簡單的獲取網頁內容,curl 是乙個功能強大的php庫。本文主要講述如果使...

用php抓取網頁內容方法總結

用php抓取頁面的內容在實際的開發當中是非常有用的,如作乙個簡單的內容採集器,提取網頁中的部分內容等等,抓取到的內容在通過正規表示式做一下過濾就得到了你想要的內容,至於如何用正規表示式過濾,在這裡就不做介紹了,有興趣的同學可以參考本站的 正規表示式 板塊 以下就是幾種常用的用php抓取網頁中的內容的...