Как сделать запрос на веб-страницу с помощью PHP? - PullRequest
3 голосов
/ 08 августа 2011

То, что я пытаюсь достичь, это:

1-й - я хочу запросить страницу, как Google, но без заполнения поиска, поданного вручную 2-й - я хочу получить результат и сохранить его в базе данных

Я видел пример этого с C # здесь

http://www.farooqazam.net/c-sharp-auto-click-button-and-auto-fill-form/comment-page-1/#comment-27256

но я хотел бы сделать это с php, не могли бы вы помочь мне, пожалуйста?

Спасибо

Ответы [ 5 ]

7 голосов
/ 08 августа 2011

Вы должны использовать cURL , чтобы сделать это, не только потому, что он намного быстрее , чем file_get_contents, но и потому, что он имеет гораздо больше функций.Еще одна причина его использования заключается в том, что, как правильно отметил Xeoncross в комментариях, file_get_contents может быть отключен вашим веб-хостом по соображениям безопасности.

Базовым примером будет следующий:

$curl_handle = curl_init();
curl_setopt( $curl_handle, CURLOPT_URL, 'http://example.com' );
curl_exec( $curl_handle ); // Execute the request
curl_close( $curl_handle );

Если вам нужны данные возврата из запроса, вам нужно указать опцию CURLOPT_RETURNTRANSFER:

$curl_handle = curl_init();
curl_setopt( $curl_handle, CURLOPT_URL, 'http://example.com' );
curl_setopt( $curl_handle, CURLOPT_RETURNTRANSFER, true ); // Fetch the contents too
$html = curl_exec( $curl_handle ); // Execute the request
curl_close( $curl_handle );

Существует множество опций cURL, например, вы можете установить время ожидания запроса:

curl_setopt( $curl_handle, CURLOPT_CONNECTTIMEOUT, 2 ); // 2 second timeout

Для справки по всем опциям смотрите справку curl_setopt () .

3 голосов
/ 08 августа 2011
$html = file_get_contents('http://example.com');

- самая простая версия, которую вы получите.

1 голос
/ 08 августа 2011
<?php
$r = new HttpRequest('http://example.com/feed.rss', HttpRequest::METH_GET);
$r->setOptions(array('lastmodified' => filemtime('local.rss')));
$r->addQueryData(array('category' => 3));
try {
    $r->send();
    if ($r->getResponseCode() == 200) {
        file_put_contents('local.rss', $r->getResponseBody());
    }
} catch (HttpException $ex) {
    echo $ex;
}
?>

Из руководства php ...

0 голосов
/ 08 августа 2011

Если вы нашли название поля (q), которое вы хотите заполнить на удаленной странице (Google), вы можете заполнить его, используя синтаксис GET:

http://www.google.com/?q=hello
0 голосов
/ 08 августа 2011

Вы можете использовать PHP CUrl , для подробных манипуляций с сайтом, к которому вы получаете доступесли сайт предоставляет услуги!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...