PHP Curl: Obtendo um diretório listando e baixando diretórios conectados ao HTTP

Eu sou bastante novo para CURL e eu consegui buscar arquivos individuais como este:

$c_session = curl_init(); curl_setopt ($c_session, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($c_session, CURLOPT_URL, $uri); curl_setopt ($c_session, CURLOPT_TIMEOUT, '12'); $content = curl_exec($c_session); curl_close ($c_session); 

Agora eu preciso ser capaz de listar diretórios e baixá-los usando o CURL. A captura é que eu preciso me conectar a um servidor HTTP e não a um FTP.

Você terá que analisar uma lista gerada pelo servidor, seja isso por DirectoryListing como acima, ou outro script do lado do servidor que gera uma lista de links.

Você então analisará o HTML e retirará todas as tags de href.

Se você está confiando na saída de outro script (Directorylisting), talvez seja necessário executar o HTML por meio de arrumação para produzir XHTML, e depois passar para o simplexml. Você pode então escrever uma consulta xpath como ‘// a’ e recuperar todos os atributos.

 $list = array(); $x = new SimpleXMLElement($stringfromcurl); foreach ($x->xpath('//a') as $node) { curl_fetch_href($x['href']); } 

Ou … gerar a lista você mesmo como algo um pouco mais fácil de analisar, então faça o mesmo tipo de negócio.

Isso equivale a fazer algo como wget -r -l1

Eu não acho que exista uma function de listview de diretórios nativos em HTTP. O mais próximo que você obterá é o DirectoryListing que o Apache e outros servidores da Web podem produzir ao acessar uma URL da pasta. Mas isso é HTML e você terá que analisá-lo primeiro.

Melhor use o FTP ou, se puder, tenha um script do lado do servidor gerar uma lista simples que você pode baixar, analisar e processar.

Quando você vai para um host / caminho / Se não houver index.html, muitos servidores irão listar os nomes e links para arquivos. Nem todos os servidores estão configurados para mostrar diretórios vazios. Se o servidor que você está conectando é, você precisa exibir a listview do diretório gerado.

Dê uma olhada na biblioteca de análise simples_html_dom para isso.

O servidor está usando o WebDAV ? Se assim for, você poderá encontrar uma biblioteca para PHP que possa permitir que você faça isso. As possibilidades são escassas, no entanto, especialmente se você está tentando obter informações de um servidor web voltado para o público.