2009-10-15 32 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以了解可能的解决方案。之后,您需要解析生成的页面,这很大程度上取决于有问题的网站本身:一个网站可能会使用可以使用正则表达式轻松检索的已命名元素,而另一个网站可能不会,因此很难获取您的值'感兴趣。