如何使用cURL在表单上使用JS来表示表单值

时间:2012-10-17 00:26:13

标签: php javascript curl screen-scraping

* 对于长篇帖子抱歉 * 我在PHP中使用cURL到post一些表单字段,以便返回post的结果需要一些帮助,因为表单有点不寻常。

cURL脚本

 $ch = curl_init();
 $data = array('field_1_name' => 'field_value',
               'field_2_name' => 'field_value',
               'field_3_name' => 'field_value',
              ); 
 curl_setopt($ch, CURLOPT_URL,'http://url.com');  
 curl_setopt ($ch, CURLOPT_POST, 1);
 curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $fp = fopen('data.php', 'w');
 curl_setopt($ch, CURLOPT_FILE, $fp);
 curl_exec ($ch);
 curl_close ($ch);
 fclose($fp);

你应该注意的事情

  1. 字段不是text-fields,而是radiodropdown字段的组合。
  2. 表单包含JS,但firebug控制台未显示AJAX个帖子,而是表单适用于SESSIONSHTTP-CACHE数据。
  3. 选择表单字段后,页面似乎为reload,并插入下一个下拉列表的值。 (同样,firebug没有将此显示为AJAX请求。)
  4. 以下是表单

    dropdown字段的示例
    <select name="field_name" onchange="document.getElementById('uploadForm').action.value='RELOAD';document.getElementById('uploadForm').reloadTrigger.value='trigSize';document.getElementById('uploadForm').submit();">
       <option value="option_1">option_1</option>
       <option value="option_2">option_2</option>
       <option value="option_3">option_3</option>
    </select>
    

    请注意onChange事件触发重新加载的网页,其中包含下一个dropdwon及其相应的options

    我正在努力实现的目标

    每个dropdown字段包含各种选项。根据表单上选择的组合,最终页面重新加载会根据选择的这些选项返回价格。我需要将价格选项保存到我的数据库中。

    所以我的数据库看起来像这样:

    option_1   |   option_2   |   option_3   |   price   |
    field_1    |   field_2    |   field_3    |    25     |
    

    我包含了所有这些信息,因为有经验的人可能会指向我更好的方向(意思是:toots / libraries / tutorials / etc。)我我不确定cURL是否适合这项工作。我更喜欢与PHP合作。那你觉得怎么样?感谢您的时间和建议。我欢迎并感谢所有有用的信息。

    - 旁注 - 我使用RUBYWATIR-WebDriver中编写了一个脚本,该脚本成功地抓取了信息,但工作速度太慢了。每种产品平均有5,000种不同的组合,这种方法每分钟只返回10次。 (FAIL)

    修改1

    只是澄清一下。此表格不在我的服务器上,不是由我拥有或运营。我打算抓取表单返回的数据。

1 个答案:

答案 0 :(得分:0)

您似乎希望获得最终重新加载的结果,该结果将返回HTML表单中的价格。最后一页将包含所有选定的值和价格。现在,除了将价格传递给表单之外,您不需要获取除价格之外的其他值。价格可以通过正则表达式获取。这些值可以很容易地保存在您的数据库中。

我认为这可能是解决方案!!!