使用数据集中的数据填写HTML表单,然后将结果存储到文件中

时间:2019-02-28 23:20:30

标签: php forms selenium scripting htmlunit

最有效的方法是使用数据集中的数据(CSV,JSON或类似数据)以编程方式在网站上填写HTML表单,然后将提交的表单的结果检索到另一个数据集中?我希望能够多次执行此操作,每次使用不同的参数填充表单,并始终从输入数据集中检索这些参数。

我正在阅读有关Selenium和HTMLUnit的信息,它们似乎在做类似的事情。但是它们需要安装依赖项并学习如何使用它们。会过分杀人吗?是否有可能通过编写自己的脚本来实现此目的的简便方法?

我尝试编写php curl脚本,但是此脚本不会生成请求所需的标头或cookie,因此我无法检索任何内容。

<?php
/**
* Send a POST requst using cURL
* @param string $url to request
* @param array $post values to send
* @param array $options for cURL
* @return string
*/
function curl_post($url, array $post = NULL, array $options = array())
{
    $defaults = array(
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_URL => $url,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 4,
        CURLOPT_POSTFIELDS => http_build_query($post)
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if( ! $result = curl_exec($ch))
    {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
} 
?>

我不确定这是否是正确的方法。

任何提示/资源将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以用Selenium编写此脚本-它只是一个浏览器驱动程序,它将从客户端填写表单。如果页面不是很复杂,则可以在Python中使用库请求并将POST数据直接发送到最终页面。 Requests是一个更快的库,编写一个发送POST数据的脚本需要5分钟的学习时间。