0

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

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

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

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

4

6 回答 6

0

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

于 2009-10-15T07:07:11.593 回答
0

解析 HTML 文件和我们看到的一样。因此,在发布数据后呈现的 HTML 页面将包含一些或任何显示附加文本的 HTML 元素。当您解析页面检查是否存在此或容器时,如果存在则读取其余数据。没有发布数据的 HTML 页面不会有这个附加或容器。

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

于 2009-10-15T07:10:37.210 回答
0

首先。您的页面应该是 abc.php。否则它不会解析任何 php.ini 文件。

第二。这是一些可以帮助您的代码(我希望)。复制/粘贴此示例并将其放入 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>

如果不是这种情况。你想像解析 XML 一样解析 HTML,你应该使用DOMDocumentPHP 类

$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

希望这可以帮助

于 2009-10-15T07:26:30.773 回答
0

好问题,但我认为 PHP 不可能。我的公司使用 C 语言中非常先进的工具来做到这一点。它只是抓取任何页面并发送任何表单并获取响应 HTML。但是您可能会找到一些工具。不知道。

于 2009-10-15T08:44:59.913 回答
0

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

于 2009-10-17T11:14:19.857 回答
0

如果您想将表单发送到 Web 服务器(即首先“填写”它),您需要类似于 Perls WWW::Mechanize 的东西。有关执行此操作的可能解决方案,请参阅此问题。之后,您需要解析生成的页面,这在很大程度上取决于相关站点本身:一个站点可能使用您可以使用正则表达式轻松检索的命名元素,而另一个站点可能不会,这使得获取您的值变得更加困难'感兴趣。

于 2009-10-17T11:24:32.143 回答