Suivez les fils RSS
 
Auteur
Pages :
julien67
# 08 Feb 2010 - 21:07:40
Citer
21 Posts
Bonjour à tous,

j'aurais besoin de votre aide, voilà je voudrais récupérer le lien de ma video qui est se trouve ds les flashvars, dans la balise script donc, voilà le code que j'ai.


<?php $oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors();
$html = new DOMDocument();
$html->loadHtmlFile( 'http://www.monsite.com/videos/lavideo.html' );
$xpath = new DOMXPath( $html ); $links = $xpath->query( '//a' );
foreach ( $links as $link ) { echo $link->getAttribute( 'href' ), "\n";
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting ); ?>


Et ci-dessous ce que je compte récupérer, uniquement le lien
so.addVariable("contenu_video","http://monsite.com/yY3jI4TEXqqB2yaBUpU9Fg/mavideo.flv");


merci smile
Modifié par julien67 (09 Feb 2010 - 21:58)

^
Heyoan
# 08 Feb 2010 - 21:12:25
Citer
Modérateur
8101 Posts
Salut,

ben ça serait plus facile de te répondre en voyant ce qui est récupéré... donc avec une url valide. cligne

^
julien67
# 08 Feb 2010 - 21:26:17
Citer
21 Posts
tu vois...J'ai un site pour adulte lol et çà peut poser problème...

^
Heyoan
# 08 Feb 2010 - 21:32:26
Citer
Modérateur
8101 Posts
Certes !

Donc tant pis. cligne

^
julien67
# 08 Feb 2010 - 22:12:22
Citer
21 Posts
je vais faire un éffort pour le lien donc voilà le parser sur mon autre site:
http://clipofficial.com/parser.php

et voilà le lien de la video à titre d'exemple:
http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music


La prochaine fois je m'apstiendrai de dire "site pour adulte" biggol

^
Heyoan
# 08 Feb 2010 - 22:36:42
Citer
Modérateur
8101 Posts
julien67 a écrit :
La prochaine fois je m'apstiendrai de dire "site pour adulte"
Yep ! Et je précise que ça n'est pas un jugement de valeur mais simplement que ça va à l'encontre des règles du forum. cligne

Tu pourrais essayer
foreach ( $links as $link ) {
$href = $link->getAttribute( 'href' );
$pattern = '#/video/#';
if( preg_match( $pattern, $href )) {
echo '<p>'.$href."</p>\n";
}
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );


^
julien67
# 09 Feb 2010 - 18:36:37
Citer
21 Posts
J'ai essayé ton code et çà me donne une page blanche

j'ai modifié à ce que j'obtienne tous ce qui se trouve dans la balise script

seulement j'ai du mal avec les expressions rationnelles.


<?php $oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors();
$html = new DOMDocument();
$html->loadHtmlFile( 'http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music' );
$tagname = $html->getElementsByTagName('script');
foreach($tagname as $resultat)
echo $resultat->firstChild->nodeValue . "<br />";
libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );
$recherche = preg_match("/([[:punct:]](content_video)[[:punct:]](\,)[[:punct:]]((.|\n)*?)[[:punct:]])/i", $resultat);
print_r($resultat);
?>

J'ai cette érreur:
Warning: preg_match() expects parameter 2 to be string,

^
Heyoan
# 09 Feb 2010 - 18:44:52
Citer
Modérateur
8101 Posts
julien67 a écrit :
J'ai cette érreur:
Warning: preg_match() expects parameter 2 to be string,
Ben oui : le preg_match devrait se trouver dans la boucle foreach.

Par ailleurs le print_r($resultat) ne vas rien te donner et $recherche vaudra true ou false.

Questions :
* pourquoi n'es-tu pas parti de mon bout de code ?
* pourquoi m'avoir donné un mauvais exemple de retour ? C'est en voyant que toutes les urls contenaient /video/ que j'ai fait ma regexp alors qu'avec la page que tu donnes ça n'est plus le cas...
Modifié par Heyoan (09 Feb 2010 - 18:45)

^
Heyoan
# 09 Feb 2010 - 19:08:47
Citer
Modérateur
8101 Posts
A essayer :
foreach($tagname as $resultat) {
$resultat = $resultat->firstChild->nodeValue;
$pattern = '#contenu_video","(.*\.flv)"#';
preg_match( $pattern, $resultat, $matches );
echo '<pre>';
print_r($matches[1]);
echo '</pre>';
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );

Modifié par Heyoan (09 Feb 2010 - 19:18)

^
julien67
# 09 Feb 2010 - 19:24:57
Citer
21 Posts
j'ai rajouté ton code comme suit:

<?php $oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors();
$html = new DOMDocument();
$html->loadHtmlFile( 'http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music' );
//$xpath = new DOMXPath( $html ); $links = $xpath->query( '//a' );
//$tagname-> getElementsByTagName('script');
$tagname = $html->getElementsByTagName('script');
foreach($tagname as $resultat) {
$resultat = $resultat->firstChild->nodeValue;
$pattern = '#contenu_video","(.*)\.flv#';
preg_match( $pattern, $resultat, $matches );
echo '<pre>';
print_r($matches[1]);
echo '</pre>';
} libxml_clear_errors(); libxml_use_internal_errors( $oldSetting );
?>


Et çà marche... biggrin

par contre, l'extension manque alors j'ai rajouté comme suit:

print_r($matches[1].'.flv');


çà me retourne une bouche de .flv??

^
Heyoan
# 09 Feb 2010 - 19:54:47
Citer
Modérateur
8101 Posts
julien67 a écrit :
par contre...
Tu n'as donc pas vu que j'avais édité mon code précédent.

^
julien67
# 09 Feb 2010 - 21:36:25
Citer
21 Posts
merci Heyoan, tu n'imagines pas à quel point j'avais besoin de ce code, donc un grand merci!!

Php n'est vraiment pas facile.
Moi mon fort c'est plutot (x)html css intégration.

^
Heyoan
# 09 Feb 2010 - 21:43:22
Citer
Modérateur
8101 Posts
De rien smile !

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. cligne

^
julien67
# 10 Feb 2010 - 11:54:28
Citer
21 Posts
Dis moi, saurais tu comment faire pour ajouté un user agent mozilla par éxemple ds le code précédent??

J'ai trouvé çà, je sais pas comment faire le lien

$s_url = 'http://clipofficial.com/video/DAB74Y9ONN1D/Obvious-Westlife-Karaoke-Music';
$s_user_agent = 'Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020921 Netscape/7.0';
$s_html = $o_sc->browse($s_url, $s_user_agent);

Mis à part l'autre possibilité d'ajouté l'user agent directement ds .htacces

^
Heyoan
# 10 Feb 2010 - 12:06:22
Citer
Modérateur
8101 Posts
C'est quoi le but du jeu ? rolleyes

^
julien67
# 10 Feb 2010 - 13:24:05
Citer
21 Posts
C'est juste par précaution, c'est expérimentale langue
Modifié par julien67 (10 Feb 2010 - 13:25)

^
julien67
# 11 Feb 2010 - 09:11:23
Citer
21 Posts
C'est bon heyoan, j'ai trouvé cligne

^
julien67
# 14 Feb 2010 - 21:11:25
Citer
21 Posts
Dis moi heyoan smile , le code php me retourne directement le lien. Comment fait on pour assigner le résultat dans une variable, c'est pour pouvoir faire appel de la variable ds ma page html.


Assign('mainurl',$mainurl);


merci cligne

^
Heyoan
# 14 Feb 2010 - 21:52:00
Citer
Modérateur
8101 Posts
julien67 a écrit :
Dis moi heyoan...
Pour info je ne suis pas le seul à répondre dans ce salon ! langue

julien67 a écrit :
Comment fait on pour assigner le résultat [d'une fonction] dans une variable
Il suffit de ne pas faire d'echo (ou de print) dans la fonction mais de faire un return.

Par exemple :
function Assign($libelle, $valeur) {
return '<a href="'.$valeur.'">'.$libelle.'</a>';
}

$mainurl = 'http://www.google.fr/';
$lien = Assign('mainurl', $mainurl);
echo $lien;

Modifié par Heyoan (14 Feb 2010 - 21:58)

^
julien67
# 15 Feb 2010 - 20:22:08
Citer
21 Posts
je comprend mieux maintenant l'utilisation de la fonction(), merci

^
Pages :