Заполните форму HTML, используя данные из набора данных, и сохраните результаты в файл - PullRequest
0 голосов
/ 01 марта 2019

Каков наиболее эффективный способ программного заполнения формы HTML на веб-сайте, использования данных из набора данных (CSV, JSON или аналогичного ...) и последующего извлечения результатов этой отправленной формы в другой набор данных?Я хотел бы иметь возможность делать это несколько раз, каждый раз заполняя форму различными параметрами, всегда извлекая эти параметры из моего входного набора данных.

Я читал о 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 голосов
/ 01 марта 2019

Вы можете написать этот скрипт в Selenium - это всего лишь драйвер браузера, он заполнит форму со стороны клиента.Если страница не очень сложная, вы можете использовать библиотечные запросы в Python и напрямую отправлять POST-данные на последнюю страницу.Requests - это более быстрая библиотека, и для написания скрипта, отправляющего POST-данные, вам понадобится 5 минут обучения.

...