我试图通过curl
库获取页面数据。我可以通过简单的链接来做到这一点,但是当我要提交表单然后获取数据时,我不能。它返回页面的默认值,而不是提交的表单。让我解释一下代码。
$url = ...
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
// I'm sending post data
$params = array(
'madrak'=>5,
'B1' => 'مشاهده اطلاعات'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// and execute...
我获取数据的页面是用asp
编写的,该页面的表单部分是:
<input type="submit" value="مشاهده اطلاعات" name="B1">
<select name="madrak" size="1" class="style1" id="1">
<option value="1">زير ديپلم</option>
<option value="5">ديپلم</option>
<option value="6">فوق ديپلم</option>
<option value="7">ليسانس</option>
<option value="8">فوق ليسانس</option>
<option value="9">دكترا</option>
<option selected="" value="6">فوق ديپلم</option>
</select>
似乎表单未提交。因为我可以在没有表单提交的情况下获取正在加载的数据。有什么想法吗?
答案 0 :(得分:1)
首先我要提一下,您不必构建帖子数据的查询字符串。你可以传递数组。
请尝试设置HTTP标头。与内容类型,用户代理等一样,目标网站可能会检查标题。
但最重要的部分是设置Content-Type: application/x-www-form-urlencoded
HTTP标头。
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);