0

有一个网站提供搜索服务。你输入一个数字,搜索,它会返回结果。我想要做的是通过coldfusion以编程方式运行该搜索,而不必去该站点并手动搜索。

这是我想阅读/抓取的网页中的表单的样子(如查看页面源代码时所见):

<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 输入字段。我想向该字段发布一个值,运行搜索,并在我的冷融合代码中获取结果。这是我到目前为止所拥有的:

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