Curl kapmak HTML içeriği

3 Cevap php

Ben bir giriş gerektiren bir web sayfası var.

Ben HTTP kimlik doğrulama isteği oluşturmak için curl kullanıyorum. Bu çalışır, ama benim linklerden tüm içeriği kapmak mümkün değilim. Ben tüm görüntüleri özledim.

Nasıl Ben de görüntüleri yakalayabilir?

<?php

// create cURL resource
$URL = "http://10.123.22.38/nagios/nagvis/nagvis/index.php?map=Nagvis_CC";
//Initl curl
$ch = curl_init();

//Set HTTP authentication option
curl_setopt($ch, CURLOPT_URL, $URL);  // Load in the destination URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); //Normal HTTP request, not SSL
curl_setopt($ch, CURLOPT_USERPWD, "guest:test" ); // Pass the user name and password

// grab URL and pass it to the browser
$content = curl_exec($ch);

$result = curl_getinfo($ch);
// close cURL resource, and free up system resources
curl_close($ch);

echo $content;
echo $result;

?>

Ben bu uyarı mesajı alıyorum Warning: curl_error(): 2 is not a valid cURL handle resource in C:\xampp\htdocs\LiveServices\LoginTest.php on line 24

3 Cevap

cURL görüntüler elde etmez ya da herhangi başka bir 'içerik', sadece ham HTML sayfası alır. Eğer orijinal sayfasında mevcut olan <img /> etiketleri eksik söylüyorsun?

Curl Ayrıca herhangi bir CSS veya JavaScript ayrıştırmak değil, bu yüzden içerik olanlar ile değiştirilirse, o yoluyla gelmeyecek. Örneğin, sen almak mümkün olabilecek bir background-image bir elemanın daha fazla kazıma, yani, ilgili CSS dosyasını almak ve bu ayrıştırma yapmak sürece.

Ben ana sorun html göremiyorum, bu yüzden sorunun ne olduğundan emin olamaz. Iki şey aklıma, o söyledikten sonra.

Görüntüler göreceli olup olmadığını kontrol etmek için ilk şey. Onlar şeklinde gösterilir ise ../xyz/foo.jpg veya foo.jpg sonra tam url src görüntüleri düzenlemek gerekir or katacak ya {[(3) }] html

Kendi haddeleme daha hızlıdır HTML ayrıştırma için, Simple HTML DOM library kullanın.

İkinci sorun görüntüleri de bu durumda da tüm görüntüleri indirmek zorunda kalacağını oturum için kullanıcı gerektiren ve ya onları kodlayan baz 64 sonra içerik onları gömmek olduğunu, ya da zamansal bunları saklayabilirsiniz sunucu.

Here the some html codes: The images that I want to get:

<img id="backgroundImage" style="z-index: 0;" src="/nagios/nagvis/nagvis/images/maps/Nagvis_CC.png"/>

<a href="/nagios/cgi-bin/extinfo.cgi?type=2&host=business_processes&service=NLThirdPartyLive" target="_self">

Ve javascript bir sürü.

Ben basit bir HTML dom libray kullanmaya çalıştı, ancak çıkış dizidir. hiçbir şey

require("/simplehtmldom/simple_html_dom.php");

$ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, 'WhateverBrowser1.45'); curl_setopt($ch, CURLOPT_URL, 'http://10.123.22.38/nagios/nagvis/nagvis/index.php?map=Nagvis%5FCC'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); //Normal HTTP request, not SSL curl_setopt($ch, CURLOPT_USERPWD, "guest:test" ); // Pass the user name and password curl_setopt ($ch, CURLOPT_TIMEOUT, 60); $result = curl_exec($ch);

$html= str_get_html($result); echo $ret= $html->find('table[class=header_table]');

echo $ result;