線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5150
推到 Plurk!
推到 Facebook!

如何抓取網頁資料

缺席
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-12-15 20:15:44 IP:220.140.xxx.xxx 訂閱
請問一下,要如何抓取網頁上的部份文字,這部份文字是會更新的,更新的速度還算快。

就是一個網頁,上面有兩個選項,選一下,案下送出就會有資料呈現出來,旁邊有更新按鈕讓人更新用。

搜尋的結果,有人用WebBrowser,感覺這個好像比較容意,可是我沒有這元件,所以又去看看別人的。

好像有人是用clientSocket和serverSocket,這兩個元件我也是沒有。

最後我用的是Idhttp這元件然後用Get去抓網頁資料,可是執行就錯了,錯的地方不是只我的打的地方,而是其他的pas檔。

大家可以指點我一下抓網頁資料方法的方向嗎?
編輯記錄
tokiama 重新編輯於 2009-12-15 20:16:11, 註解 無‧
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-12-16 08:54:42 IP:59.120.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-12-16 09:38:01 IP:125.231.xxx.xxx 訂閱
一開始灌的時後元件感覺少狠多了,之後是自己去抓元件來灌的。

我是了兩個網址,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]
編輯記錄
tokiama 重新編輯於 2009-12-16 09:38:49, 註解 無‧
tokiama 重新編輯於 2009-12-16 09:39:12, 註解 無‧
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-12-16 11:34:54 IP:59.120.xxx.xxx 未訂閱
您的方法明顯錯了
要抓網頁的原始資料請先爬爬文~

===================引 用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-12-16 13:04:07 IP:125.231.xxx.xxx 訂閱
[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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-12-16 13:34:11 IP:59.120.xxx.xxx 未訂閱
呃...上一篇的回應中...難道沒看到我特地加粗字體的紅色字嗎= =??
問題點都已經點出來了...

請先想想我紅色字體的部份
然後再用該元件去爬抓網頁原始檔的文章
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-12-17 22:14:40 IP:125.231.xxx.xxx 訂閱
嗯...有看到紅色字體。
可是還是不明白 Post 的意義,Post 的那個 ( ) 裡前面是連接的網頁,後面是傳參數去給網站,這裡的觀念我應該沒有錯?
接下來我真的有點不明白,意思是我用錯了?不應該是用 Post ,而是應該用 Get 的意思嗎?
可是用 Memo1.Text:=IdHttp1.Get('http://tw.yahoo.com'); 的結果跟使用 Post 得到的東西一樣。
還是說,要抓內容這兩個屬性是沒有關係的?
可以明白的說一下是我哪裡錯了嗎?還是從頭開始錯?請指點我一下,麻煩了。
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-12-18 08:09:34 IP:59.120.xxx.xxx 未訂閱
請參閱Delphi的Help,裡頭有說明
編輯記錄
老大仔 重新編輯於 2009-12-18 08:09:53, 註解 無‧
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-12-20 14:13:54 IP:125.231.xxx.xxx 訂閱
Help 是說按 F1 出來的那一個嗎?是的話,看不太懂,只看的懂他在說明 IdHTTP 的功用,也不是很瞭解。

然後 Post 是不是有要傳東西給網站?就是一些參數。

那些參數是不是跟網頁程式有關?就是那些下拉式選單之類的,那是要寫在 Post 參數裡傳給網站嗎?

更新;
[code xml]
編輯記錄
tokiama 重新編輯於 2009-12-20 14:41:31, 註解 無‧
tokiama 重新編輯於 2009-12-20 14:42:30, 註解 無‧
tokiama 重新編輯於 2009-12-20 14:43:30, 註解 無‧
系統時間:2024-05-16 15:01:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!