0

検索サービスを提供するサイトがあります。番号を入力して検索すると、結果が返されます。私がやりたいのは、サイトにアクセスして手動で検索する代わりに、ColdFusionを介してプログラムで検索を実行することです。

これは、私が読みたい/スクレイプしたいWebページのフォームがどのように見えるかです(ページソースを表示したときに見られるように):

<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>

私が本当に気にかけているフィールドは、Num入力フィールドだけです。そのフィールドに値を投稿し、検索を実行して、coldfusionコードで結果を取得したいと思います。これは私がこれまでに持っているものです:

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

しかし、私がそのページに行くと、ダンプはただ「Connection Failure」と言っています。私は何が間違っているのですか?

4

2 に答える 2

1

サンプル コードからは、送信アクションの URL が明確ではありませんか? 空白です。サイト側がJavaScriptなどで設定しているのではないでしょうか?

displayTypeまた、おそらくフォーム変数を投稿する必要があります。これはチェック ボックスであり、何らかの値を提供する必要がある可能性があります。

画面のスクレイピングに注意してください。メンテナンスの悪夢になる可能性があります。とにかく彼らが提供する公式 API を使用する必要がある場合は、コードを変更するとすぐに (URL やマークアップなどを投稿すると) コードが壊れる可能性があるため、それを行う必要があります。

于 2010-11-29T09:55:58.843 に答える
0

わかりました、このウェブサイトは解決策を提案しました:http: //australiansearchengine.wordpress.com/2009/09/28/cfhttp-connection-failure/

彼らは、次のcfhttpparamタグを追加することを提案しました。

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

これで、接続障害は発生しなくなりました:)

于 2010-11-29T09:51:55.657 に答える