php

php 撈網頁dom操作

simple_html_dom 這個真得是一個很好用的工具

你可以去撈別人的網頁回來,以前都要自己寫正規表示式去分析網頁

現在可以透過DOM的方式來操作

而我為何特地要留下這篇來呢? 因為我不知道為甚麼有些網站的資料撈回來

他會被判定不是html的結構,所以就會出現

Fatal error: Call to a member function find()

這樣的錯誤訊息。

而如果我們把程式改一下,透過用curl的方式去撈資料的話,就可以解決這個問題了

simple_html_dom.php 可以去google下載或是 http://simplehtmldom.sourceforge.net/

<?php
// example of how to use basic selector to retrieve HTML contents
include('../simple_html_dom.php');
 
// get DOM from URL or file
 
$base = 'http://www.yahoo.com.tw';
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $base);
curl_setopt($curl, CURLOPT_REFERER, $base);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
// Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($str);
 
// find all link
 
foreach($html->find('a') as $e)
echo $e->href . '<br>';
 
// find all image
foreach($html->find('img') as $e)
echo $e->src . '<br>';
 
// find all image with full tag
foreach($html->find('img') as $e)
echo $e->outertext . '<br>';
 
/*
// find all span tags with class=gb1
foreach($html->find('span.gb1') as $e)
echo $e->outertext . '<br>';
 
// find all td tags with attribite align=center
foreach($html->find('td[align=center]') as $e)
echo $e->innertext . '<br>';
 
// extract text from table
echo $html->find('td[align="center"]', 1)->plaintext.'<br><hr>';
 
// extract text from HTML
echo $html->plaintext;*/
?>
 
Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)