2009-10-15 76 views
0

我有一個頁面,比如說abc.html,它有一些帶有一些字段的小表格。解析中的問題

<form name="form" method="post" action="abc.html">.......................</form> 

當我們提交表單再次回來abc.html一些數據發佈和顯示處理數據發佈之後,來到在頁面上導致名稱。

在整個過程中,頁面url保持不變。現在我想在提交表單後解析這個包含數據的abc.html。我已經完成了解析,其中原始url包含所有數據但不是這樣提交後數據顯示在頁面上。請告訴我如何解析這些頁面?

+0

謝謝大家的指導:-D'curl'解決了我的問題!我知道的 – developer 2009-10-22 07:08:02

回答

0

那麼,要從服務器獲取正確的HTML,您必須發送包含表單數據的POST請求。然後你可以解析服務器響應。

+0

...但如何通過表單發送請求,然後使用php獲取結果,我不知道:-( – developer 2009-10-15 07:09:07

+0

我不完全確定,如果我理解你的問題和你想做什麼,但你知道你可以發送POST請求通過CURL並從服務器獲取響應:http://php.net/manual/en/book.curl.php? – Max 2009-10-17 12:11:16

0

解析HTML文件與我們看到的相同。因此,發佈數據後呈現的HTML頁面將包含一些或任何HTML元素,其中顯示附加文本。當你解析這個頁面時,如果這個或者一個容器存在,那麼讀取其餘的數據。顯示沒有發佈數據的HTML頁面不會有這個額外的或容器。

編輯:看看這個問題:PHP Screen Scraping and Sessions所有的

+0

但如何到達那個URL包含額外的數據??? url保持相同的所有通過過程 – developer 2009-10-15 07:12:46

0

第一。你的頁面應該是abc.php。否則,它不會解析任何PHP。

二。這裏有一些代碼可以幫助你(我希望)。複製/粘貼此示例並將其放置在abc.php中

<html> 
<head></head> 
<body> 
<?php 
if (isset($_POST['submit'])) { 
    echo 'you posted the following value :'.$_POST['foo']; 
} 
?> 
<form name="form" action="abc.php" method="post"> 
<input type="text" name="foo" value="" /> 
<input type="submit" name="submit" value="Press Me" /> 
</form> 
</body> 
</html> 

如果不是這種情況。希望能與您解析HTML像XML解析,你應該使用DOMDocument類PHP的

$oDom = new DOMDocument(); 
$oDom->loadHTML($sHTMLstring); 
// or 
$oDom->loadHTMLFile($sFileName); 
// now you can walk the dom like 
$oDomElement = $oDom->getElementByTagName('form'); 

http://nl.php.net/manual/en/domdocument.loadhtml.php http://nl.php.net/manual/en/domdocument.loadhtmlfile.php http://nl.php.net/manual/en/domdocument.getelementsbytagname.php

希望這有助於

+0

我認爲你還沒有理解我的問題.....我必須解析包含數據的abc.html在獲得提交後顯示的數據。我想解析提交表單後提交的數據。 – developer 2009-10-15 07:44:00

+0

好耶我不明白,你能詳細說明一下嗎?是abc.html生成的?哪個頁面應該解析?哪個部分需要解析?請給出更多的細節 – 2009-10-15 07:51:50

0

好問題,但我認爲這是不可能的PHP。我的公司在C語言中使用非常先進的工具來完成這項工作。它只需抓取任何頁面併發送任何表單並獲得HTML響應。 但是你可以找到一些工具。不知道。

0

我認爲這裏的一點是,您不能只打開URL並閱讀返回的HTML。您必須扮演瀏覽器的一部分才能與服務器端表單交互。爲此,您必須將自己的代碼寫入HTTP POST表單輸入數據。對POST的HTTP響應將包含生成的HTML,然後您可以解析處理後的結果。

0

如果您想將表單發送到Web服務器(即先「填充」),則需要類似於Perls WWW :: Mechanize的內容。請參閱this question以瞭解可能的解決方案。之後,您需要解析生成的頁面,這很大程度上取決於有問題的網站本身:一個網站可能會使用可以使用正則表達式輕鬆檢索的已命名元素,而另一個網站可能不會,因此很難獲取您的值'感興趣。