關於抓取網頁程式的問題 |
答題得分者是:pcboy
|
lindavid
一般會員 ![]() ![]() 發表:3 回覆:3 積分:1 註冊:2007-03-02 發送簡訊給我 |
各位大大你們好 小弟目前寫了一個BCB程式 用來抓取Yahoo以及Google關鍵字搜尋結果頁面的程式
關鍵字下法先以最簡單的方式(純中文字不含 and, or, not 功能) http://www.google.com.tw/search?q=關鍵字 http://tw.search.yahoo.com/search?p=關鍵字 我試用過TNMHTTP以及TIdHTTP兩種方式連結取得網頁 兩種方式都一樣 一兩筆 或是手動輸入關鍵字都沒有問題 可以順利抓取搜尋結果頁面 但是當我想透過讀自己設定好的Excel格式 讀取大量關鍵字一筆一筆丟給Yahoo或是Google去搜尋取得結果頁面時 Google沒問題 Yahoo卻大約到第25筆左右就把我封鎖了 讀到的網頁是error 999的頁面 感覺是被封IP 可是直接用IE開卻又沒問題(在URL列中直接key入 http://tw.search.yahoo.com/search?p=關鍵字) 可能是Yahoo會去判別是哪隻程式在發request 如果是他不認識的程式就封鎖。 所以想請問各問大大有沒有解決的辦法,或是讓Yahoo認為我這隻程式模擬IE發request而不被它檔下 或是有沒有其他功能可以換用看看的 TIdTCPClient TIdTCPServer 之類的 我都不太會用 @@:" 希望能抓一百個以上關鍵字的回傳結果頁面 謝謝各位大大 <(_ _)> |
hipig
高階會員 ![]() ![]() ![]() ![]() 發表:31 回覆:75 積分:111 註冊:2007-01-15 發送簡訊給我 |
|
pcboy
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
lindavid
一般會員 ![]() ![]() 發表:3 回覆:3 積分:1 註冊:2007-03-02 發送簡訊給我 |
先謝謝兩位大大的熱心回答 感激不盡
hipig大大: 我這幾天試了一下您說的user-agent,我只有修改IdHTTP1->Request->UaserAgent 改的跟我IE7.0一樣(或是其他版本),但是結果還是不行ˊˋ 請問您說的自訂的user-agent是該怎麼實作呢?或是可以給我一些相關的參考資料嗎(我去搜尋引擎打 大部分都是彈出修改IE的user-agent之方法) 謝謝... pcboy大大: 第一種方法先暫時不考慮,第二三種方法的話,感覺難度很高深,小弟我...實在想不出頭緒該怎麼實作,如果可以的話,也請您給一個方向,謝謝 如果用自訂的user-agent來騙過系統是可行的話,可能會比較好 :p |
pcboy
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
第2種方法提供一些資訊參考
uses ShellApi; // ShellExecute 用 procedure FileCopy( const Source, Dest : string ); var S, D: TFileStream; begin S := TFileStream.Create( Source, fmOpenRead ); try D := TFileStream.Create( Dest, fmOpenWrite or fmCreate ); try D.CopyFrom( S, S.Size ); finally D.Free; end; finally S.Free; end; end; procedure TForm1.FormCreate(Sender: TObject); var Content : String; begin 開啟儲存回傳資料檔案; Content:= IdHTTP1('http://tw.search.yahoo.com/search?p=關鍵字'); if Pos('999', String) then begin 關閉儲存回傳資料檔案; NewProgName := FormatDateTime('yyyymmddhhmmss',Now) '.exe'; FileCopy('Project1.exe', NewProgName); ShellExecute(handle, 'open', 'C:\Program Files\' NewProgName ,'C:\save.txt', '', SW_SHOWNORMAL); Application.Terminate; end; end;
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
pcboy
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
lindavid
一般會員 ![]() ![]() 發表:3 回覆:3 積分:1 註冊:2007-03-02 發送簡訊給我 |
|
pcboy
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |