2013-12-25 6 views
1

Я работаю над scrapper (на PHP) и использую cURL для извлечения страниц. Сценарий можно запускать как в браузере CLI &. Это мой первый опыт работы с PHP на CLI, и я старался сделать экран симпатичным и иметь хорошее представление данных, такое как статистика scrape.Silence PHP cURL output в CLI

Я могу сгенерировать выход так, как хочу, ну почти. Но с каждым Curl запроса сервер делает, он также выводит эту дополнительную информацию заголовка, как это:

* About to connect() to imbd.com port 80 (#0) 
* Trying 123.111.222.333... * connected 
> GET /categories/something.html HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20130401 Firefox/21.0 
Host: imdb.com 
Accept: */* 

< HTTP/1.1 200 OK 
< Server: nginx/1.4.1 
< Date: Wed, 25 Dec 2013 02:17:06 GMT 
< Content-Type: text/html 
< Transfer-Encoding: chunked 
< Connection: keep-alive 
< Vary: Accept-Encoding 
< X-Powered-By: PHP/5.3.17 
< Set-Cookie: mobileType=0%something; expires=Wed, 01-Jan-2014 02:17:06 GMT; path=/; domain=.imdb.com 
< 
* Connection #0 to host imdb.com left intact 
* Closing connection #0 
... 
Statistics 
... 

Функция, которая использует Curl

public function getHTML($url) 
    { 
     $user_agent = "Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.9.1.6) ..."; 

     $options = Array(
      CURLOPT_RETURNTRANSFER => TRUE, 
      CURLOPT_FOLLOWLOCATION => TRUE, 
      CURLOPT_AUTOREFERER => TRUE, 
      CURLOPT_CONNECTTIMEOUT => 120, 
      CURLOPT_TIMEOUT => 120, 
      CURLOPT_MAXREDIRS => 10, 
      CURLOPT_USERAGENT => $user_agent, 
      CURLOPT_URL => $url, 
     CURLOPT_VERBOSE => true, 
     CURLOPT_SSL_VERIFYPEER => false, 
     ); 
     $ch = curl_init(); 
     curl_setopt_array($ch, $options); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     return $data; 
    } 

Теперь все, что я хочу сделать, это скрыть эту информацию от CLI, как в браузере. Если бы это было cli curl, я бы использовал -s, чтобы закрыть его. Но я не могу найти альтернативу PHP для этого. Кроме того, обесценивается CURLOPT_MUTE. Все, что мне дал Google, это установить CURLOPT_RETURNTRANSFER true, что у меня уже есть.

Также я хотел бы знать, как я могу избегать установки каких-либо печенья, чтобы избежать отслеживания.

Если это помогает в любом случае я использую

  • ОС: Ubuntu
  • Программное обеспечение: PHP5.5
  • Framework: CodeIgniter 3,0-DEV
  • Расширение: Curl
  • Интерфейс: Командная строка (клемма)
+0

Вставьте свой код из сценария здесь. – chanchal118

+0

@ chanchal118 Я включил функцию, которую я вызываю, чтобы получить html. Я использую его как '$ html = $ this-> scrape-> getHTML (" http://imdb.com '); ' – ultimate

ответ

5

Удалить это.

CURLOPT_VERBOSE => true, 

Согласно php manual

Set value to

ИСТИНА для вывода подробной информации. Записывает вывод в STDERR или файл, указанный с помощью CURLOPT_STDERR.