有一个提供搜索服务的网站。输入数字,搜索,然后返回结果。我想要做的是通过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" >
</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
<input type="radio" name="displayType" value="STUFF" /> Other Stuff
<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
”。我做错了什么?
答案 0 :(得分:1)
从示例代码中不清楚提交操作URL是什么?这是空白的。也许该网站使用JavaScript等设置它?
您可能还需要发布displayType
表单变量,因为这是一个复选框,可能需要提供一些值。
当心屏幕抓取 - 这可能是一场维护噩梦。如果无论如何使用他们提供的官方API,你应该这样做,因为一旦他们更改了他们的代码(发布URL /标记等),你的代码就可以很好地破解。
答案 1 :(得分: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">
现在我不再遇到连接失败:)