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