我使用简单的DOM php解析器抓取了一个网站:
<?php
include 'domparse.php';
$html = file_get_html('http://oceanofgames.com/rebel-galaxy-free-download/');
foreach($html->find('form[action="http://oceanofgames.com/Cloud-VPS-Download.php"]') as $element)
echo $element;
?>
我最终得到了类似的东西:
<form action="http://oceanofgames.com/Cloud-VPS-Download.php" target="_blank" method="post">
<p>
<input type="hidden" name="filename" value="Rebel_Galaxy.zip" /><br />
<input type="hidden" name="filesize" value="2GB" /><br />
<input type="hidden" name="id" value="85.25.103.44" />
</p>
<div align="center">
<input type="image" alt="Download" height="99" src="http://oceanofgames.com/wp-content/uploads/2013/09/button-download.png" width="184" />
</div>
</form>
我需要使用CURL使用表单的这些凭据为服务器创建一个POST服务器,我不知道该怎么做。请指导我。
我知道手动方式是:
curl --data "filename=Rebel_Galaxy.zip&filesize=2GB&id=85.25" https://example.com/resource
但是,我有很多这样的URL要处理。如何编写php代码来隔离每个元素,然后使用CURL发出POST请求?
我是PHP的新手,所以如果你能保持简单,我们将非常感激:)
答案 0 :(得分:3)
在CURL中使用POST的最简单方法是:
$url = 'https://example.com/resource';
$data = 'filename=Rebel_Galaxy.zip&filesize=2GB&id=85.25';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/*curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0'
)
);*/
$server_output = curl_exec ($ch);
echo $server_output;