php抓取網頁的若干實現方式
最近在做乙個笑話平台,包含web版、安裝版,由於沒有笑話資源,所以就用php寫了乙個後台程式,每天定時從各大笑話**抓取資料,下面整理了一些php抓取網頁內容的基本方式。
一、 php抓取頁面的主要方法:
1. file()函式 2. file_get_contents()函式 3. fopen()->fread()->fclose()模式 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的時候會報錯。
<?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;
?>
網頁抓取 PHP實現網頁爬蟲方式小結
抓取某乙個網頁中的內容,需要對dom樹進行解析,找到指定節點後,再抓取我們需要的內容,過程有點繁瑣。lz總結了幾種常用的 易於實現的網頁抓取方式,如果熟悉jquery選擇器,這幾種框架會相當簡單。一 ganon 文件 測試 抓取我的 首頁所有class屬性值是focus的div元素,並且輸出clas...
網頁抓取 PHP實現網頁爬蟲方式小結
抓取某乙個網頁中的內容,需要對dom樹進行解析,找到指定節點後,再抓取我們需要的內容,過程有點繁瑣。lz總結了幾種常用的 易於實現的網頁抓取方式,如果熟悉jquery選擇器,這幾種框架會相當簡單。一 ganon 文件 測試 抓取我的 首頁所有class屬性值是focus的div元素,並且輸出clas...
php抓取網頁
用php抓取頁面的內容在實際的開發當中是非常有用的,如作乙個簡單的內容採集器,提取網頁中的部分內容等等,抓取到的內容在通過正規表示式做一下過濾就得到了你想要的內容,以下就是幾種常用的用php抓取網頁中的內容的方法。1.file get contents php url contents file g...