JavaScript并HTTP请求几乎就像一个浏览器,一旦你搞清楚它们是什么,你可以尝试在perl/python/etc中重新创建它们。 使用Firefox + Firebug,您可以在'Net'面板中看到请求。
你可能要考虑的事情是用户代理字符串,cookies,有时返回的数据是由Javascript运行/解释等等。也许你选择的语言有一个很好的httpbrowser类,你可以使用?
刚接过来一看,搜索IBM,从萤火虫走马上任的数据,与“&”更换新行,并把它请求的URL后:
[http://bcode.bloomberg.com/sym/dwr/call/plaincall/searchMgr.search.dwr?callCount=1&windowName=&c0-scriptName=searchMgr&c0-methodName=search&c0-id=0&c0-e1=string:ibm&c0-e2=string:&c0-e3=number:100&c0-e4=number:0&c0-e5=boolean:false&c0-param0=Object_SearchCriteria:{search:reference:c0-e1,%20filter:reference:c0-e2,%20limit:reference:c0-e3&,%20start:reference:c0-e4,%20allSources:reference:c0-e5}&batchId=4&page=%2Fsym%2F&httpSessionId=&scriptSessionId=FBC68693A4E1BC08D6E0DDFBDF6D0860]
但它返回
throw 'allowScriptTagRemoting is false.';
//#DWR-REPLY
if (window.dwr) dwr.engine.remote.handleBatchException({ name:'java.lang.SecurityException', message:'GET Disallowed' });
else if (window.parent.dwr) window.parent.dwr.engine.remote.handleBatchException({ name:'java.lang.SecurityException', message:'GET Disallowed' });
并且没有数据。所以看起来你必须编写一个post请求。看看他们的限制和指导方针,也许你应该联系并询问是否有公共API?
几乎所有的搜索提供者都有一些API,但免费的搜索引擎会对您搜索的频率,一天中的多少次以及您获得的结果数量施加一些限制。 – akarnokd 2009-06-24 18:54:03
此网站没有API。并且假设对于我可以做多少次或多久进行一次搜索没有限制。 – Saobi 2009-06-24 18:55:17
您可以提供一些关于您想要用于搜索的网站的提示吗?如果搜索是本地搜索,则可以要求公开的API搜索提供程序仅在此网站中进行搜索。 – akarnokd 2009-06-24 19:56:34