伊莉討論區

標題: VB6 如何讀取網頁裡的文字 [打印本頁]

作者: z9592447    時間: 2014-5-30 01:52 PM     標題: VB6 如何讀取網頁裡的文字

請問怎麼讀取下面這個網址下載那邊的文字
http://pan.baidu.com/s/1eQosYyQ#dir/path=%2Fapps%2F%E3%82%A4%E3%82%B1%E3%81%A6%E3%82%8B2%E4%BA%BA
我在原始碼裡完全找不到那個框框裡面的文字...


作者: sam30525sam    時間: 2014-5-30 04:00 PM

本帖最後由 sam30525sam 於 2014-5-30 04:00 PM 編輯

你應該說明你是怎麼抓原始碼的,
如果你是 滑鼠右鍵>檢視原始碼 ,那我不太知道要怎麼跟你講這東西…

你如果可以說得更詳細你怎麼抓的,才可以給你幫助,
不然方法有很多,要解決的問題點更多。

順帶一提,如果你是要做下載器的話,
建議你先從基本的做起,找個小網站抓抓看,
不然一下子做這個你會很灰心。
作者: z9592447    時間: 2014-5-30 04:36 PM

我是想用WebBrowser這一個控建抓取下載框框那裡面的文字而已
但是不知道要怎麼抓....
還有我抓文字不是要做下載器
是有其他的用途....
作者: sam30525sam    時間: 2014-5-30 04:45 PM

本帖最後由 sam30525sam 於 2014-5-30 06:31 PM 編輯
z9592447 發表於 2014-5-30 04:36 PM
我是想用WebBrowser這一個控建抓取下載框框那裡面的文字而已
但是不知道要怎麼抓....
還有我抓文字不是要做 ...

你這發言跟你原本的問題有牴觸,
WebBrowser應該有含所有的頁面的原始碼,
因為他是調用IE出來做的,不太可能會有抓不到的頁面,
你看到什麼,WebBrowser就有什麼。

所以你的問題點不是開帖的「沒有這段文字」,而是你3F的「不知道怎麼抓這段文字」,
這兩個差很多。

怎麼抓做法也有很多,但通常比較常用的是利用標籤或id去抓,
用標籤或id怎麼抓你可以google。

麻煩參考以下網址
利用WebBrowser去抓取原始碼的值
C# WebBrowser抓取HTML原始碼與AJAX動態產生的內容
作者: z9592447    時間: 2014-5-30 05:45 PM

本帖最後由 z9592447 於 2014-5-30 05:46 PM 編輯

抱歉3F 意思打錯了 是找不到這段文字才對
還有你可以自己去看看原始碼真的沒有下載那邊的文字.... 只有框框外面的原始碼...
還有我忘記說了我是用VB6

作者: sam30525sam    時間: 2014-5-30 06:15 PM

本帖最後由 sam30525sam 於 2014-5-30 06:30 PM 編輯
z9592447 發表於 2014-5-30 05:45 PM
抱歉3F 意思打錯了 是找不到這段文字才對
還有你可以自己去看看原始碼真的沒有下載那邊的文字.... 只有框框 ...

不對,
我說過「你看到什麼,WebBrowser就有什麼。」。
除非你今天沒裝IE,如果沒裝IE連WebBrowser都不能用,
因為WebBrowser就是調用IE來做的,
你今天IE看的到的東西WebBrowser一定有,
如果沒有,那你IE一定看不到。

問這樣子好了,你的原始碼是怎麼看到的?
是滑鼠右鍵,還是WebBrowser的Document相關?

你應該要把抓取網頁原始碼那段程式碼PO上來,
不然怎麼知道你問題出在哪邊?


作者: z9592447    時間: 2014-5-30 06:22 PM

本帖最後由 z9592447 於 2014-5-30 06:34 PM 編輯

這是我用瀏覽器抓的原始碼  
不是控建的
控建的我還不知道怎麼抓...
作者: sam30525sam    時間: 2014-5-30 06:27 PM

本帖最後由 sam30525sam 於 2014-5-30 06:31 PM 編輯
z9592447 發表於 2014-5-30 06:22 PM
這是我用瀏覽器抓的原始碼  
不是控建的
控建的我還不知道怎麼抓...

你先把PO的網頁原始碼刪一刪,有點礙眼。

所以說,你是滑鼠右鍵看到的網頁原始碼,
不是用WebBrowser。

你的問題在於,你不會用WebBrowser…
我只能跟你講,WebBrowser有你要的,一定有,但怎麼抓是另一回事。

我建議你google或買個入門書,
因為這個牽扯到不只WebBrowser,還有網頁架構等等,
我要是仔細回答你我就可以出書了。

怎麼抓還是我最上面說的,用標籤或id去抓,這個已經是最能夠符合你要的答案了,
詳細的做法就真的你要自己去查google或者買書了。


作者: z9592447    時間: 2014-5-30 06:37 PM

本帖最後由 z9592447 於 2014-5-30 06:38 PM 編輯

其實我是有另1個方法
  1. WebBrowser1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER ' 全選
  2. WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER ' 複製
複製代碼

但是那個下載區裡面的東西太多的話就沒辦法完全抓到了
所以我才想看可不可以直接抓下載區裡面的文字.
作者: sam30525sam    時間: 2014-5-30 09:53 PM

本帖最後由 sam30525sam 於 2014-5-30 10:35 PM 編輯
z9592447 發表於 2014-5-30 06:37 PM
其實我是有另1個方法

但是那個下載區裡面的東西太多的話就沒辦法完全抓到了

痾~我還是那句話,
你IE看到什麼,WebBrowser就有什麼。

如果你剛開始摸WebBrowser,可以把它想像成它就是IE,
它不是控制項,是有很多其他功能的IE,

如果你說東西太多無法完全抓到,
你這時候應該打開IE看看是不是有那個東西在,
有的話代表你抓的方式錯誤,
沒有的話代表你還要再進一步處理。

另外,
也沒有辦法「直接抓文字」這種動作,
WebBrowser本身就是有全部頁面的網頁原始碼,
你必須要分析拆解才可以抓到,有點像是在剝洋蔥一樣一個一個拆,
而且每個網站都不同,都必須個別拆,更不用提會遇到其他問題要解決。

你如果用IE,請開啟該網頁,按下F12,
如果用Chome就滑鼠右鍵>檢查元素,
這樣你就會看到全部的網頁原始碼。

這種看全部網頁原始碼算是在處理網頁的基本常識,
還沒提到可能會遇到的問題跟網頁的基本架構,或者JavaScrpt、AJAX、DLL…
WebBrowser本是是算三種抓網頁的方法中最好學的,
所以我才會跟你說,詳細教妳我真的可以出一本書了。

你的問題不再於你遇到什麼障礙,而是你不熟悉工具,
所以對你來說最好的方法不是上來問人,
而是上網找教學或者買入門書,有了底子才好溝通。

作者: z9592447    時間: 2014-5-30 10:49 PM

謝謝大大的指導我會在上網查看看的~~
作者: darkjack    時間: 2014-5-31 09:38 PM

稍微看了一下..你真的很會挑...挑了百度芸....
那個網址啥米的都算是動態生成的..也就是你滑鼠移動到那邊才會生成一個網頁碼...

webbrowser 控件內取得的網頁原始碼有可能找不到那段的
作者: sam30525sam    時間: 2014-5-31 11:47 PM

darkjack 發表於 2014-5-31 09:38 PM
稍微看了一下..你真的很會挑...挑了百度芸....
那個網址啥米的都算是動態生成的..也就是你滑鼠移動到那邊才 ...

可以喔,我就抓過了。

WebBrowser就是調用IE,
IE會出現的內容WebBrowser就有。

如果你說用WebClient或HttpWebResponse我還會相信。
但只要經過處理,我說的這些方法其實都可以抓的到。

作者: darkjack    時間: 2014-6-1 06:17 PM

sam30525sam 發表於 2014-5-31 11:47 PM
可以喔,我就抓過了。

WebBrowser就是調用IE,

IE 有什麼webbrowser  是沒錯
但是如果按下F12 跳出視窗...有的根本原始碼內找不到
作者: darkjack    時間: 2014-6-5 08:13 PM

最典型的...youtube 網站

[attach]101605325[/attach]

還有本站 的影片區


[attach]101605364[/attach]


我標藍字...就是 用
[attach]101605374[/attach]

網頁下的 檢視原始碼去做搜尋..找不到該文字段

作者: sam30525sam    時間: 2014-6-6 10:28 AM

本帖最後由 sam30525sam 於 2014-6-6 03:16 PM 編輯
darkjack 發表於 2014-6-5 08:13 PM
最典型的...youtube 網站

感謝你的分享,
這有點難解釋,我先從結論說起好了。

「伊莉影片區」與「youtube」的影片是可以下載放在電腦的。

================

其實這個離題蠻大的,跟本串感覺沒什麼關係,
樓主問的是抓「文字」,而版主你說的卻是抓「影片」,
這兩個相差蠻大的,不能將兩個不一樣的東西混為一談。
對於文字,我是可以說「IE有的,WebBrowser也有。」
對於影片,我也可以說「IE有的,WebBrowser也有。」
但是「怎麼抓」,卻差很多。

舉個例子好了,
1. 抓文字
(1) 範例用樓主提供的連結。
假設我要從網頁原始碼上抓「(一般コミック) [佐野タカシ] イケてる2人」這串文字,
你可以在網頁原始碼上看到「(一般コミック) [佐野タカシ] イケてる2人」,
但是像樓主說的,
我不知道這串文字是什麼東西,但是要抓下來,就要經過「處理」。
(2) 範例用版主給的連結
如果你要抓「youtube」的「1991 -  相聲瓦舍 -  誰呼嚨我」,網頁原始碼有這個文字,你的圖片也有看到,
如果是要抓「伊莉影片區」的「喜歡就頂一下」,網頁原始碼也有這個文字,我確認過了。

2. 抓影片
但是抓影片就不一樣,
或者說,根據你想抓的東西,每個網站幾乎都不一樣。
因為有點複雜,我簡單的說,
你只要給我網址,
我就可以根據該網頁原始碼抓到影片下載到本機電腦。

如:
伊莉影片區,只要給我 http://video.eyny.com/index.php/video/index/246VYJGG.html
youtube,只要給我 https://www.youtube.com/watch?v=N53hgZHxVDE
我就可以根據網頁原始碼,經過「處理」,下載到本機電腦,
影片當然不是一個文字,要經過一堆處理才能抓到。

不管是影片還是文字,提示一定都在該網頁的原始碼,
所以我才會說「IE有的WebBrowser也有」,實際上也是這樣,
但是「怎麼抓」,就真的是一門學問。






作者: darkjack    時間: 2014-6-6 06:25 PM

也對..這篇開頭主題就是文字...算離題...

不過我提出的圖片也有些牽連...
我標示出來的那段藍色底...也是在webbrowser 內的原始碼都找不到的
但是卻可以在 IE 的F12 內找到...
作者: sam30525sam    時間: 2014-6-6 09:24 PM

本帖最後由 sam30525sam 於 2014-6-6 09:29 PM 編輯
darkjack 發表於 2014-6-6 06:25 PM
也對..這篇開頭主題就是文字...算離題...

不過我提出的圖片也有些牽連...

版主你好

根據我實際測的結果,的確是有的。
來源是你的那兩個影像網址。

youtube
[attach]101628597[/attach]

伊莉影片
[attach]101628598[/attach]


我程式只拉一個WebBrowser跟一個Button,
程式碼跟跟介面也都可以看圖。

或者程式碼可以看這(C#,因為很簡單,我就不再轉VB)
  1.         private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.TestCode();
  4.         }

  5.         private void TestCode()
  6.         {
  7.             System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser1.DocumentStream, System.Text.Encoding.Default);
  8.             string gethtml = getReader.ReadToEnd();
  9.             Console.WriteLine(gethtml);
  10.         }
複製代碼
我只有開啟網址,然後直接把WebBrowser的原始碼印出來後,
我想這樣子應該很明顯了。


如果有任何疑問,建議可以開個新帖討論。

作者: sam30525sam    時間: 2014-6-7 08:05 PM

本帖最後由 sam30525sam 於 2014-6-7 08:12 PM 編輯
sam30525sam 發表於 2014-6-6 09:24 PM
版主你好

根據我實際測的結果,的確是有的。

點評
darkjack 用資料流 抓內容??? 怎會用資料流抓的跟DocumentText不同  [color=#999999 !important]發表於 半小時前





OK~!
我可以跟你講,這兩個絕對是一樣的東西,
因為你有疑問,我就直接給你看結果會比較快。

youtube
[attach]101651572[/attach]

伊莉影片區
[attach]101651573[/attach]

程式碼
  1.          private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.TestCode02();
  4.         }

  5.         private void TestCode02()
  6.         {
  7.             string gethtml = webBrowser1.DocumentText;
  8.             Console.WriteLine(gethtml);
  9.         }
複製代碼
有疑問很好,才可以進步,
我個人在發表文章都會針對內容作驗證。
但我也會有錯誤的地方,
很歡迎向我提出錯誤的點或交流,這樣我也才可以再進步。

如果版主你認為「IE有的WebBrowser也會有」這論點有疑問,
我建議你自己可以像我一樣實際做一下就知道了,
如果真的沒有,你可以發個新帖問。

這帖已經離題了~"~




作者: z9592447    時間: 2014-6-14 01:17 PM

本帖最後由 z9592447 於 2014-6-14 01:17 PM 編輯
sam30525sam 發表於 2014-6-7 08:05 PM
點評
darkjack 用資料流 抓內容??? 怎會用資料流抓的跟DocumentText不同  發表於 半小時前

我終於可以用IE抓到文字了.....超級感動
再來就是看如何用VB抓到了
[attach]101798333[/attach]

作者: z9592447    時間: 2014-6-14 02:01 PM

本帖最後由 z9592447 於 2014-6-14 02:02 PM 編輯

在問一下上面的跟這個有什麼區別
我用WebBrowser只能抓到這個
我是網頁白癡><
[attach]101798696[/attach]


作者: sam30525sam    時間: 2014-6-14 02:18 PM

z9592447 發表於 2014-6-14 02:01 PM
在問一下上面的跟這個有什麼區別
我用WebBrowser只能抓到這個
我是網頁白癡><

不好意思,我看不太懂你的疑問,
我自己用WebBrowser都可以抓到,
你說的那百度文件的名字也可以。

你在21樓用WebBrowser抓到的那個是完整的網頁原始碼,
如果你要抓百度文件的名字,就是用21樓的去抓。

你在20樓用IE看的跟21樓用WebBrowser抓的是一樣的東西,
你要再找一下,因為行數不同。
作者: z9592447    時間: 2014-6-14 04:32 PM

sam30525sam 發表於 2014-6-14 02:18 PM
不好意思,我看不太懂你的疑問,
我自己用WebBrowser都可以抓到,
你說的那百度文件的名字也可以。

20樓的在IE是DOM總管
21樓的在IE是偵錯工具
我不懂這2個有什麼區別....
還有偵錯工具裡那個原始碼不知道怎找文字= = 全部都找過了只有下載區外面的文字...
不像DOM總管你指到那條原始碼他就給你相對網頁上的標記位子
WebBrowser我不知道怎抓到跟DOM總管一樣的原始碼...

作者: sam30525sam    時間: 2014-6-14 06:58 PM

z9592447 發表於 2014-6-14 04:32 PM
20樓的在IE是DOM總管
21樓的在IE是偵錯工具
我不懂這2個有什麼區別....

IE的我不太了解~我最常用的是chrome,
你試試看我在18樓的方法,你自己轉成VB,
抓到的原始碼應該都一樣。
作者: z9592447    時間: 2014-6-14 10:02 PM

問一下Stream這個是屬性嗎?
我在VB6 WebBrowser 裡找不到這個東西..
作者: z9592447    時間: 2014-6-14 10:34 PM

終於找到方法了
這個可以讀取到下載區的文字了
好感動弄了
Google好久終於找到了
  1. Dim doc, objhtml
  2. Set doc = WebBrowser1.Document

  3. Set objhtml = doc.body.createtextrange()
  4. If Not IsNull(objhtml) Then
  5. Clipboard.Clear
  6. Clipboard.SetText objhtml.htmltext
  7. End If
複製代碼

作者: z9592447    時間: 2014-6-16 09:59 AM

sam30525sam 發表於 2014-6-16 09:38 AM
你現在用的方法對你來講有點吃力,
我建議你用我所PO的程式碼:如果你是要抓簡單的網頁這段就夠用。 ...

DocumentText
VB6好像沒有這個屬性= =
我打上去之後顯示錯誤...




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!