2016-04-15 1 views
0

Puisque personne ne donne réponse à mes questions précédentes, je reask cette question:file_get_content ne peut pas charger le contenu des sites

Je suis en train de construire un robot web qui cible spécifié sites Web en utilisant simple_html_dom. J'ai essayé de charger le contenu d'une des catégories de sites Web en utilisant plusieurs méthodes déjà: load_file, file_get_content, file_get_html, str_get_html, mais il continue à me donner un message « non trouvé » comme ceci:

"Check your spelling 
Use another word or term similar to what you are looking for. 
It is better if you use just one key word for searching. 
Generally used keywords will give better result." 

C'est comme si mon code essayait de charger la recherche vide (sans mot-clé). Lorsque j'ai copié l'URL directement dans le navigateur, je vois le contenu et les éléments que je veux. Cela signifie-t-il qu'il existe un site Web dont le contenu ne peut pas être chargé par simple_html_dom?

Voici mon code d'essai:

include_once('simple_html_dom.php'); 

    $target_url = "http://www.zalora.co.id/women/sepatu/"; 

    $html = new simple_html_dom(); 
    $html -> load_file($target_url); 

    //$html = file_get_html($target_url); 

    //$html = file_get_contents($target_url); 
    //$html = str_get_html($html); 

    echo $html; 

Répondre

0

Je ne peux pas expliquer pourquoi vous obtenez ce résultat, il me semble très étrange. J'ai juste essayé de charger la page html et cela a bien fonctionné, bien que j'utilise cURL. Voici le code que je:

$ch = curl_init('http://www.zalora.co.id/women/sepatu/'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
$curl_scraped_page = curl_exec($ch); 
$html = new simple_html_dom(); 
$html->load($curl_scraped_page, true, false);   
echo $html; 

Une autre chose que je dois dire est que si vous cherchez à gratter les prix de la page alors que vous êtes hors de la chance. Jetez un oeil au code source (clic droit sur la page) et vous verrez que les prix ne sont pas visibles. Ils essayent évidemment d'éviter d'être éraflés. Malheureusement, je ne sais pas quel outil d'analyse syntaxique vous devrez employer pour réussir.

+0

Merci pour votre aide. Je vais essayer votre code. Oui, vous avez raison, bien qu'il y ait un prix quand j'inspecte l'élément, mais quand j'ai essayé de voir la source de la page, le prix ne se trouve pas dans l'un des éléments html, mais dans l'application var. Cela signifie qu'ils essaient probablement de cacher leur valeur en utilisant la valeur Ajax ou Json. Mon code ne peut même pas accéder au lien de ces produits puisqu'ils étaient cachés. –

+0

btw, j'ai trouvé d'autres sites qui aiment juste ce zalora, qui évitent d'être gratté, et pire encore, puisqu'il n'y a pas de lien pair ou de valeur dans la source de la page d'affichage. Ils le cachent dans un autre "liens" en utilisant ajax. Cela signifie donc que j'ai besoin d'accéder à ces liens si je veux prendre la valeur de leurs produits. –

+0

@RudyRaito faites moi savoir si vous trouvez un autre analyseur. Je viens de lire sur le sélénium. Simple HTML Dom est un bon script pour débutants, et j'étais un vrai débutant quand j'ai commencé à l'utiliser, mais maintenant je pense à une mise à niveau. –