2010-11-29 28 views
0

Un site offre un service de recherche. Vous entrez un nombre, recherchez et renvoie les résultats. Ce que je veux faire est d'exécuter cette recherche par programmation via coldfusion au lieu d'avoir à aller sur le site et à chercher manuellement.S'il vous plaît aider: Comment puis-je gratter cette page web?

C'est ce que le formulaire dans la page web je voudrais lire/éraflure ressemble (comme on le voit lors de l'affichage de la source de la page):

<form id="frmNumID" name="frmNum" action="" method="post"> 

    <TABLE border=0 cellPadding=0 cellSpacing=0> 
    <TR> 
     <TD align="center"> 
     <label class="NumLabel" for="Num" ACCESSKEY="1">ENTER NUM:</label> 
     <input class="NumInput" id="Num" name="inputNum" onfocusin="select()" title="Num Input" tabindex="1" type="text" value="" size ="29" maxlength="17" >&nbsp;&nbsp; 

     </TD> 

     <TD align="center"> 
     <input class="NumInput" title="Submit Num" tabindex="2" type="image" src="/include/pics/SubmitBtn.jpg" value="submit" ACCESSKEY="2"> 
     </TD> 
    </TR> 
    </TABLE> 

    <TABLE border=0 cellPadding=0 cellSpacing=0> 
    <TR>  
     <TD colspan="2" align="center"> 

     <input type="radio" name="displayType" value="NONE" Checked />No Pictures&nbsp;&nbsp;       
     <input type="radio" name="displayType" value="STUFF" /> Other Stuff&nbsp;&nbsp;     
     <input type="radio" name="displayType" value="MORESTUFF" /> More Other Stuff 
     </TD> 
    </TR> 

    </TABLE> 
    <div id="NUMMsg"></div> 

    </form> 

Le seul champ je me préoccupe vraiment est le Num champ de saisie. Je souhaite publier une valeur dans ce champ, lancer la recherche et obtenir les résultats dans mon code coldfusion. Voilà ce que j'ai jusqu'à présent:

<cfhttp url="http://www.someurl.com/" 
     method="POST"> 
    <cfhttpparam name="Num" type="FormField" value="123456789123456" /> 
</cfhttp> 
<cfdump var="#cfhttp.filecontent#" /> 

Mais quand je vais à la page la décharge dit juste « Connection Failure ». Qu'est-ce que je fais mal?

+1

Donnez-nous une lecture: http://www.coldfusionmuse.com/index.cfm/2008/10/9/cfhttp-troubleshooting – charliegriefer

+1

Mis à part les problèmes techniques, je me méfierais des sites de grattage. Les changements de structure peuvent casser votre grattoir. Les conditions d'utilisation du site peuvent l'interdire, surtout si vous le faites pour un usage personnel. Enfin, vous pouvez provoquer une charge élevée inattendue si vous martelez le site sans limitation. –

Répondre

0

Ok, ce site a proposé une solution: http://australiansearchengine.wordpress.com/2009/09/28/cfhttp-connection-failure/

Ils ont suggéré d'ajouter les balises cfhttpparam suivantes:

<cfhttpparam type="header" name="accept-encoding" value="deflate;q=0"> 
<cfhttpparam type="header" name="te" value="deflate;q=0"> 

Maintenant, je ne reçois un échec de connexion :)

+1

Je rencontre un peu ce problème. C'est une solution IIS, et nos serveurs ColdFusion au travail sont IIS, donc cela a été très fastidieux quand nous avons rencontré ce problème. – awayken

1

On ne sait pas de votre exemple de code quelle est l'URL de l'action de soumission? C'est vide. Peut-être que le site le définit en utilisant JavaScript, etc.?

Vous avez également probablement besoin de publier la variable de formulaire displayType car il s'agit d'une case à cocher et une certaine valeur doit probablement être fournie.

Attention au grattage de l'écran - cela peut être un cauchemar pour l'entretien. Si vous souhaitez utiliser une API officielle, vous devez le faire car dès que votre code est modifié (URL/balisage, etc.) votre code pourrait très bien se casser.