2012-10-03 16 views
0

我試圖從網頁中取消數據。該網頁可以是任何頁面。例如我使用curl來騙取http://www.google.com/。它給了這麼多的警告,什麼都不做。警告是在線路30上:從不正常形成的網頁中刪除數據

警告:的SimpleXMLElement :: __構建體():在 C:\瓦帕\ WWW \ nbacurl \的index.php

和該錯誤重複幾次。

我聽說過simplehtmldom,我下載了它但不知道如何使用它。我有頁面解析,但我找不到出路。這是一個非常簡單的代碼,無法正常工作。

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$contents = curl_exec ($ch); 

$xml = new SimpleXMLElement($contents); 
echo '<pre>' , print_r($xml) , '</pre'>; 
+0

您使用simplehtmldom艱難......無論如何,如果該類失敗我沒有看到(這不是最好的了)儘量[phpQuery(HTTP:/ /code.google.com/p/phpquery/) –

+0

謝謝Damien,我正在嘗試使用'simplehtmldom',但它並沒有爲我工作。所以我轉向了四條曲線和幾條xml曲線。 –

+0

請幫我個忙,因爲我對phpQuery很陌生,究竟是幹什麼的?它像jQuery,其中的功能和調用內置函數?或者是別的什麼?謝謝 –

回答

0

希望沒有人會投下來的是「風馬牛不相及」,但我已經使用mechanize刮網頁,發現它非常直觀和有效的。用小api很容易學習。

我剛剛看到你使用php而不是python。 Mechanize是一個python/perl庫,所以在這裏它可能不相關。

+0

謝謝你的時間,並ia看着你提到的刮。我希望我可以找到它的解決方案,我正在尋找。 –

+0

哎呀!我想它說蟒蛇。所以你可以使用一個混合選項,從php文件中執行python腳本。否則這個建議不會很有價值。 – ajon

+0

是:) 我使用PHP,而不是Python ...但感謝給時間到後,深爲讚賞:) –

1

不要試圖用SimpleXMLElement解析它,也許可以給DOMDocument或其他更適合HTML解析試驗的解決方案。

+0

謝謝麥克烏拉圭回合的時候,我會考慮DOM文檔,看看它是如何工作的。 –

0

也許試試ScriptableBrowser(對於PHP)。我個人使用Mechanize with BeautifulSoup在Python中。

+0

感謝您的時間,但我正在使用php :) –

+0

ScriptableBrowser *是*在PHP中。 – taco

+0

對不起,我覺得是錯誤的。我會研究它,並感謝分享:) –

0

使用DOMDocumentloadHTMLloadXML啓用恢復。前者可能是你真正想要的。

<?php 
$doc = new DOMDocument(); 
$doc->loadHTML($contents); 

... 
?> 

參見:http://www.php.net/manual/en/class.domdocument.php#domdocument.props.recover

<?php 
$doc = new DOMDocument(); 
$doc->recover = TRUE; 
$doc->loadXML($contents); 

... 
?> 
+0

謝謝你的時間,我已經測試了你的解決方案,但仍然沒有成功,它期待';'。代碼是 $ content = file_get_contents('http://www.google.com/'); $ doc = new DOMDocument(); $ doc-> recover = true; echo'

' , print_r($doc->loadHTML($content)) , '
'; 警告:DOMDocument :: loadHTML():htmlParseEntityRef:期待';'在實體中,行數:40(11次) –

+0

使用您的捲髮代碼來獲取內容。這只是一個警告。你的DOM應該存在。通過DOMDocument-> saveXML()獲取它。你不能使用print_r。 – jimp

+0

它現在說「移動302」文檔已移到此處。點擊它後,它會重定向到網頁。我怎樣才能從它得到'HTML/XML' :(? –