【问题标题】:POST value and get page source [duplicate]POST值并获取页面源[重复]
【发布时间】:2013-04-02 02:29:15
【问题描述】:

我正在尝试使用 html 表单向页面发布值并获取该页面的源代码。

我可以使用$html = file_get_html('http://www.exam.com/results/');获取源代码

但在获取源之前,我需要先将值发布到该页面,然后获取源。

让我说我应该发布值的其他页面是http://www.exam.com/results/

我创建了一个用于提交价值的表单。

<form method="post" action="http://www.exam.com/results/">

<input type="hidden" value="900358967" name="eid">
<input name="confirm" type="submit" value="Enter" >

</form>

所以它会在该页面上发布值并显示数据,但是如何使用数据获取页面源?

这可能吗?我到处搜索并试图抓住它,但我不知道在发布值后如何抓取。

【问题讨论】:

  • 使用页面源是什么意思?你能解释更多吗?
  • 我认为您需要为此目的使用 cURL。使用 cURL 将值发布到表单并返回结果页面源可能会起作用。 php.net/manual/en/book.curl.php
  • 如果我理解您想要获取发送 POST 的页面的源代码的问题?
  • @chandresh_cool : 就像这样,我会在我学校的网站上发布一个考试 ID,所以它会在该页面上显示考试结果,如果我可以获取带有结果的页面源,我可以过滤结果部分并在我的网站上显示结果。
  • 我认为您在谈论 PHP 时使用“页面的源代码”一词制造了不必要的混乱(显然,它也有它的源代码,在您向其发布内容后您无法获得),实际上,您想要的是生成的 HTML(源代码)。

标签: php javascript html


【解决方案1】:

我认为你必须尝试与CURL 相同

//set POST variables
$url = 'http://www.exam.com/results/';
$fields = array(
'eid' => urlencode('900358967')
);
$fields_string = "";

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

【讨论】:

  • 嗨,它给出了一个错误 - 注意:未定义的变量:C:\wamp\www\results\1\1.php 中的字段字符串
  • @naveencgr8 忘记初始化它现在检查..:)
  • 似乎有效,但它没有显示结果,它显示了输入考试ID的普通文本框..意味着该值没有像我们预期的那样发布..
  • @naveencgr8 使用 print_r($result) 检查它返回的内容。
  • @naveencgr8 学校网站可能会受到保护,以防止“假”POST 操作...不确定您尝试做的事情是否合法...除非学校要求您入侵他们的网站获取考试成绩...
【解决方案2】:

我注意到您的问题用 javascript 标记。所以这里有一个可以使用 jQuery 为您工作的解决方案。

$.post('http://www.exam.com/results/',$('form').serialize(), function(data) {
    alert(data);
});

如果 URL 只返回 html,则 html 将在函数返回的 data var 中。

【讨论】:

  • 非常感谢,但这对我不起作用,而且我对 java 不太熟悉,不知何故我使用 PHP 解决了它。感谢您的时间@brainfeeder。 :)
  • @naveencgr8 没问题。以上是JavaScript。与 Java 不一样 ;)
  • 是的,我知道,对不起我的错...... :) :)
猜你喜欢
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 2011-08-29
相关资源
最近更新 更多