【问题标题】:Getting data from a website where posted data is required从需要发布数据的网站获取数据
【发布时间】:2012-08-27 05:46:24
【问题描述】:

我是 php 新手,请耐心等待。

我想从一个网站解析一些 html 数据,我可以用 http://simplehtmldom.sourceforge.net/ 很容易地做到这一点。问题是我需要从网站获取数据,我需要在其中发布一些数据,这意味着我不能只使用库需要的 url。我可以使用该操作并发布一个表单以重定向到该网站,但我无法获取信息。你能帮帮我吗?

问候 杰斯帕

【问题讨论】:

    标签: php html-parsing


    【解决方案1】:

    此代码使用CURL为您的问题查询stackoverflow

    $url = 'https://stackoverflow.com/search';
    
    $params = preparePostFields( array(
         'q' => 'Getting data from a website where posted data is required',
       ));
    
    $ch = curl_init($url);
    
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    
    curl_close($ch);
    
    echo $result;
    
    exit;
    
    function preparePostFields($array) {
      $params = array();
    
      foreach ($array as $key => $value) {
        $params[] = $key . '=' . urlencode($value);
      }
    
      return implode('&', $params);
    }
    

    关于CURLOPT_POSTFIELDS,请查看manual page

    【讨论】:

    • 我试过了,但是当我回显我的 $result 时,它显示“缺少参数”。该网站只使用一种形式,name=aarskort,我的 $params 是:$params = array('aarskort' => '20113670');你知道为什么吗?
    • 发布表单的定义以提供更多详细信息。
    • Opslag for mine tilmeldinger - Indtast årskortnr
    • 您可能还需要设置 B1,因为表单处理程序也可能会检查其值。
    • 嗯,怎么样? :) 在 $params 数组中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多