如何抓取網頁資料 |
缺席
|
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
請問一下,要如何抓取網頁上的部份文字,這部份文字是會更新的,更新的速度還算快。
就是一個網頁,上面有兩個選項,選一下,案下送出就會有資料呈現出來,旁邊有更新按鈕讓人更新用。 搜尋的結果,有人用WebBrowser,感覺這個好像比較容意,可是我沒有這元件,所以又去看看別人的。 好像有人是用clientSocket和serverSocket,這兩個元件我也是沒有。 最後我用的是Idhttp這元件然後用Get去抓網頁資料,可是執行就錯了,錯的地方不是只我的打的地方,而是其他的pas檔。 大家可以指點我一下抓網頁資料方法的方向嗎? 編輯記錄
tokiama 重新編輯於 2009-12-15 20:16:11, 註解 無‧
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
1.網頁的網址是什麼?給大家去測看看。
2.WebBrowser應該本來就有安裝進去Delphi中了(以Delphi7為例)。 3.clientSocket和serverSocket這兩個元件應該只是沒有被安裝進去Delphi中,可能要手動安裝, 至於怎麼安裝,站上已經有資料可找了。 4.既然是錯的地方是其他的pas,那麼該pas檔是您自己的?還是Delphi本身的pas檔? 而錯誤訊息又是什麼?又或者會不會是您的程式碼可能已經是錯的而導致以下的程式跟著錯? 5.抓網頁資料的方法在站上已經有一大堆文章可以找了,您應該先爬爬文~ ===================引 用 tokiama 文 章=================== 請問一下,要如何抓取網頁上的部份文字,這部份文字是會更新的,更新的速度還算快。 就是一個網頁,上面有兩個選項,選一下,案下送出就會有資料呈現出來,旁邊有更新按鈕讓人更新用。 搜尋的結果,有人用WebBrowser,感覺這個好像比較容意,可是我沒有這元件,所以又去看看別人的。 好像有人是用clientSocket和serverSocket,這兩個元件我也是沒有。 最後我用的是Idhttp這元件然後用Get去抓網頁資料,可是執行就錯了,錯的地方不是只我的打的地方,而是其他的pas檔。 大家可以指點我一下抓網頁資料方法的方向嗎?
編輯記錄
老大仔 重新編輯於 2009-12-16 08:58:47, 註解 無‧
|
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
一開始灌的時後元件感覺少狠多了,之後是自己去抓元件來灌的。
我是了兩個網址,http://tw.yahoo.com/ 跟 http://www.google.com.tw/ 可是只有yahoo可以,google就會出錯。 以下是當初在測試時打的。 [code delphi] procedure TForm1.Button1Click(Sender: TObject); var list : TStringList; str : string; begin list := TStringList.Create; list.Text:='http://tw.yahoo.com/'; str:=idhttp1.Post('http://tw.yahoo.com/',list); memo1.Text:=str; end; [/code] |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
您的方法明顯錯了
要抓網頁的原始資料請先爬爬文~ ===================引 用 tokiama 文 章=================== 請問一下,要如何抓取網頁上的部份文字,這部份文字是會更新的,更新的速度還算快。 就是一個網頁,上面有兩個選項,選一下,案下送出就會有資料呈現出來,旁邊有更新按鈕讓人更新用。 搜尋的結果,有人用WebBrowser,感覺這個好像比較容意,可是我沒有這元件,所以又去看看別人的。 好像有人是用clientSocket和serverSocket,這兩個元件我也是沒有。 最後我用的是Idhttp這元件然後Post('http://tw.yahoo.com/',list); ? memo1.Text:=str; end;
編輯記錄
老大仔 重新編輯於 2009-12-16 11:44:14, 註解 無‧
|
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
[code delphi]
procedure TForm1.Button1Click(Sender: TObject); var list:TStringList; str:string; begin list:=TStringList.Create; try list.Text:=edit1.Text; str:=idhttp1.Post(edit1.Text,list); memo1.Text:=str; finally list.Free; showmessage(''); end; end; [/code] 這一段是用抓原始碼用的,在爬文時有看到。 想說網頁上的資料應該會在原始碼應該會出現,所以想說把網頁原始碼抓出來,再去取出我要的內容。 這觀念是錯的? ↑ |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
嗯...有看到紅色字體。
可是還是不明白 Post 的意義,Post 的那個 ( ) 裡前面是連接的網頁,後面是傳參數去給網站,這裡的觀念我應該沒有錯? 接下來我真的有點不明白,意思是我用錯了?不應該是用 Post ,而是應該用 Get 的意思嗎? 可是用 Memo1.Text:=IdHttp1.Get('http://tw.yahoo.com'); 的結果跟使用 Post 得到的東西一樣。 還是說,要抓內容這兩個屬性是沒有關係的? 可以明白的說一下是我哪裡錯了嗎?還是從頭開始錯?請指點我一下,麻煩了。 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |