解析中的问题

时间:2009-10-15 07:03:38

标签: php parsing html-parsing

我有一个页面,比如abc.html,它有一个带有一些字段的小表单。

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

当我们提交表单时,它会再次返回到abc.html并发布一些数据,并在处理发布的数据后显示页面上的结果名称。

在整个过程中页面url保持不变。现在我想在提交表单后解析这个包含数据的abc.html。我已经完成了解析,其中原始url包含所有数据但不是这样的提交后,数据显示在页面上。请告诉我如何解析这样的页面?

6 个答案:

答案 0 :(得分:0)

好吧,要从服务器获取正确的HTML,您必须发送包含表单数据的POST请求。然后,您可以解析服务器响应。

答案 1 :(得分:0)

解析HTML文件与我们看到的一样。因此,在发布数据之后呈现的HTML页面将具有一些或任何HTML元素,其中显示附加文本。当您解析页面时,如果存在此容器或容器,则读取其余数据。显示没有发布数据的HTML页面将没有此附加或容器。

编辑:看看这个问题:PHP Screen Scraping and Sessions

答案 2 :(得分: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一样,您应该使用PHP的DOMDocument

$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

希望这有帮助

答案 3 :(得分:0)

很好的问题,但我认为PHP无法实现。我的公司使用C语言中非常先进的工具。只需抓取任何页面并发送任何表单并获取rsponse HTML。 但你可以找到一些工具。不知道。

答案 4 :(得分:0)

我认为这里的重点是你不能只打开URL并阅读回来的HTML。您必须播放浏览器的一部分才能与服务器端表单进行交互。为此,您必须将自己的代码编写到HTTP POST表单输入数据。对POST的HTTP响应将包含生成的HTML,然后您可以解析处理结果。

答案 5 :(得分:0)

如果要将表单发送到Web服务器(即首先“填充”),您需要类似于Perls WWW :: Mechanize的内容。有关可能的解决方案,请参阅this question。之后,您需要解析生成的页面,这在很大程度上取决于所讨论的站点本身:一个站点可能使用您可以使用正则表达式轻松检索的命名元素,另一个站点可能不会,这使得获取值更加困难对此感兴趣。