J'ai obtenu cette fonction pour obtenir des informations d'une URL externe. Problèmes, si le site a des robots no-index, cette fonction se bloque, ce qui bloque la boucle foreach par la suite.file_get_html n'a pas réussi à ouvrir le flux: Connexion refusée dans
msg d'erreur:
Avertissement: file_get_contents (http://webontwerp-arnhem.nl/contact): failed to open stream: Connexion refusée dans /var/www/vhosts/free-sitemap-generator.com/httpdocs/includes/cra/simple_html_dom .php sur la ligne 79
Erreur fatale: Uncaught Erreur: Appel à une fonction membre find() sur boolean dans /var/www/vhosts/free-sitemap-generator.com/httpdocs/includes/cra/xml-functions .php: 60 Stack trace: # 0 /var/www/vhosts/free-sitemap-generator.com/httpdocs/crawler.php(44): crawl_site ('http://webontwe ...') # 1 {main} lancé/var/www/vhosts/free-sitemap-generator.com/httpdocs/dans conclut/cra/xml-functions.php en ligne 60
Fonction:
function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
$dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
$contents = file_get_contents($url, $use_include_path, $context, $offset);
if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
{
return false;
}
$dom->load($contents, $lowercase, $stripRN);
return $dom;
}
appel de la fonction avec la boucle:
function crawl_site($u){
$urlList = array();
global $crawled_urls, $found_urls;
$uen=urlencode($u);
if((array_key_exists($uen,$crawled_urls)==0 || $crawled_urls[$uen] < date("YmdHis",strtotime('-25 seconds', time())))){
$html = file_get_html($u);
$crawled_urls[$uen]=date("YmdHis");
foreach($html->find("a") as $li){
$url=perfect_url($li->href,$u);
$enurl=urlencode($url);
$str = basename($url);
$dirn = dirname($url);
if($url!='' && substr($url,0,4)!="mail" && substr($url,0,3)!="tel" && substr($url,0,5)!="phone" && substr($url,0,5)!="skype" && substr($url,0,4)!="java" && array_key_exists($enurl,$found_urls)==0){
$found_urls[$enurl]=1;
$pos = strpos($str[0],'#');
$ext = strpos($url, $u);
if($ext !== false && $pos === false) {
echo "<li><div class='url-row'>$dirn/<span class='strong'>$str</span></div></li>";
array_push($urlList, $url);
}
}
}
}
si l'erreur est à '$ html-> find (" a ")', avoir un "if" vérifier avant cette ligne: 'if ($ html) {' .... et après cela essayer d'effectuer le "foreach" –
Oui, je J'ai essayé mais par exemple: Si site.com/page_1 n'a pas de balise meta robot mais si site.com/page_2 a des robots noindex. Il ne boucle pas site.com/page_1. C'est mon problème. –