php - 使用数据集中的数据填写 HTML 表单,并将结果存储到文件中
问题描述
在网站上以编程方式填写 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;
}
?>
我不确定这是否是正确的方法。
任何提示/资源将不胜感激。
解决方案
您可以在 Selenium 中编写此脚本 - 它只是一个浏览器驱动程序,它将从客户端填写表单。如果页面不是很复杂,可以使用 Python 中的库请求,直接将 POST 数据发送到最终页面。Requests 是一个更快的库,要编写一个发送 POST 数据的脚本,您需要 5 分钟的学习时间。
推荐阅读
- react-native - 使用 react-native 获取网络请求失败
- r - 如何模拟类型对电影收视率的影响?
- node.js - Node.js Express postgres 流数据以响应
- javascript - d3-attrTween 与自定义函数。(我对补间函数有什么误解?)
- javascript - Excel Javascript API 是否仅用于创建加载项?
- mysql - SQL 查询以在加入时显示特定用户的文档
- python-3.x - Python(3.8.2) - 将 selenium(3.141.0) 网页元素特殊字符转换为字符串
- rest - 无状态数据同步 API 中的滚动与(从+大小)分页与 search_after
- filenet-p8 - FileNet 异常“读取 RenditionEngineConnection 期间发生异常”
- lua - 尝试在我的 lua 脚本中使用“require(”zip“)”,出现错误