2010-05-13 15 views
3

j'ai besoin d'obtenir des images d'une source de page Web.images de phrase de la page Web coldfusion

je peux utiliser la méthode cfhttp obtenir et utiliser htmleditformat() pour lire le code HTML de cette page, maintenant je dois faire une boucle à travers le contenu pour obtenir toutes URL de l'image (le src)

puis-je utiliser rematch() ou refind() etc ... et si oui comment ??

aidez s'il vous plaît !!!!!

si je ne suis pas clair que je peux essayer de clarifier ..

+1

htmleditformat()? Ne pensez pas que cette fonction vous aide d'une quelconque manière dans cette situation. – Henry

Répondre

1

Voici une fonction qui va probablement trébucher sur beaucoup de mauvais cas, mais pourrait fonctionner si vous avez juste besoin de quelque chose de rapide et sale .

<cffunction name="getSrcAttributes" access="public" output="No"> 
    <cfargument name="pageContents" required="Yes" type="string" default="" /> 

    <cfset var continueSearch = true /> 
    <cfset var cursor = "" /> 
    <cfset var startPos = 0 /> 
    <cfset var finalPos = 0 /> 
    <cfset var images = ArrayNew(1) /> 

    <cfloop condition="continueSearch eq true"> 
     <cfset cursor = REFindNoCase("src\=?[\""\']", arguments.pageContents, startPos, true) /> 

     <cfif cursor.pos[1] neq 0> 
      <cfset startPos = (cursor.pos[1] + cursor.len[1]) /> 
      <cfset finalPos = REFindNoCase("[\""\'\s]", arguments.pageContents, startPos) /> 
      <cfset imgSrc = Mid(arguments.pageContents, startPos, finalPos - startPos) /> 

      <cfset ArrayAppend(images, imgSrc) /> 
     <cfelse> 
      <cfset continueSearch = false /> 
     </cfif> 
    </cfloop> 

    <cfreturn images> 
</cffunction> 

Remarque: Je ne peux pas vérifier pour l'instant que ce code fonctionne.

+1

Huh? * Si * vous allez la route regex (voir la réponse de Anthony pourquoi vous ne devriez pas), vous voulez juste: \t ' \t <--- INFO: saisir les choses ressemblant à des attributs src: ---> \t \t \t \t \t \t \t \t ' –

+0

J'avais écrit cette fonction il y a quelque temps (avant CF8, donc pas de REMatch) car, comme je l'ai mentionné plus haut, quelque chose de rapide et de sale. Je ne prétends pas que c'est du code de production - évidemment, il ne vérifie pas si src = est même dans une balise img (ou dans une balise du tout!) - mais tout le code ne doit pas l'être. – Soldarnal

+0

Peter Boughton: merci pour le code, il semble ne prendre qu'un seul attr. Src. si vous pouvez le modifier pour lister tous les src ... j'apprécierais cela. J'ai ajouté le #SrcMatches [i] #
dans la boucle en supposant qu'il liste tous les src trouvés. loo

1

Utilisez un navigateur et jQuery pour 'query' toutes les balise img du DOM pourrait être plus facile ...

+0

Ou en utilisant cette bibliothèque de sélection CSS basée sur Java pour faire l'interrogation: http://github.com/chrsan/css-selectors/tree –