Попробуйте использовать Гуты, это соскобом экрана и веб-ползать библиотека строится поверх инструментов, которые вы уже используете (жрать, Symfony2 Crawler). См. GitHub repo для получения дополнительной информации.
Ваш код будет выглядеть следующим образом, используя Goutte
<?php
use Goutte\Client;
$url = 'http://de.selfhtml.org/javascript/objekte/anzeige/forms_method.htm';
$client = new Client();
$crawler = $client->request('GET', $url);
$form = $crawler->selectButton('submit')->form();
$crawler = $client->submit($form, array(
'username' => 'myuser', // assuming you are submitting a login form
'password' => '[email protected]'
));
var_dump($crawler->count());
echo $crawler->html();
echo $crawler->text();
Если вам действительно нужно настроить параметры CURL вы можете сделать это следующим образом:
<?php
$url = 'http://de.selfhtml.org/javascript/objekte/anzeige/forms_method.htm';
$client = new Client();
$guzzle = $client->getClient();
$guzzle->setConfig(
array(
'curl.CURLOPT_SSL_VERIFYHOST' => false,
'curl.CURLOPT_SSL_VERIFYPEER' => false,
));
$client->setClient($guzzle);
// ...
UPDATE:
При использовании DomCrawler я часто получаю ту же ошибку. В большинстве случаев я не выбираю правильный элемент на странице или потому, что он не существует. Попробуйте вместо использования:
$crawler->selectButton('submit')->form();
сделать следующее:
$form = $crawler->filter('#signin_button')->form();
Где вы используете метод фильтра, чтобы получить элемент по идентификатору, если он имеет один '#signin_button'
или вы могли бы также получить его по классу '.signin_button'
, Метод фильтра требует The CssSelector Component.
Также отлаживайте форму, распечатав HTML (echo $crawler->html();
) и убедитесь, что вы на самом деле находитесь на правильной странице.