查看完整版本: VB6 如何讀取網頁裡的文字
頁: 1 [2]

sam30525sam 發表於 2014-6-6 10:28 AM

本帖最後由 sam30525sam 於 2014-6-6 03:16 PM 編輯

darkjack 發表於 2014-6-5 08:13 PM static/image/common/back.gif
最典型的...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也有」,實際上也是這樣,
但是「怎麼抓」,就真的是一門學問。





...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

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 static/image/common/back.gif
也對..這篇開頭主題就是文字...算離題...

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

版主你好

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

youtube


伊莉影片



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

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

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


如果有任何疑問,建議可以開個新帖討論。
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

sam30525sam 發表於 2014-6-7 08:05 PM

本帖最後由 sam30525sam 於 2014-6-7 08:12 PM 編輯

sam30525sam 發表於 2014-6-6 09:24 PM static/image/common/back.gif
版主你好

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

點評https://a471.static-file.com:8000/data/avatar/001/28/68/99_avatar_small.jpg
darkjack 用資料流 抓內容??? 怎會用資料流抓的跟DocumentText不同  發表於 半小時前




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

youtube


伊莉影片區


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

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

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

這帖已經離題了~"~



...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

z9592447 發表於 2014-6-14 01:17 PM

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

sam30525sam 發表於 2014-6-7 08:05 PM static/image/common/back.gif
點評
darkjack 用資料流 抓內容??? 怎會用資料流抓的跟DocumentText不同  發表於 半小時前


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

<br><br><br><br><br><div></div>

z9592447 發表於 2014-6-14 02:01 PM

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

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


sam30525sam 發表於 2014-6-14 02:18 PM

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


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

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

你在20樓用IE看的跟21樓用WebBrowser抓的是一樣的東西,
你要再找一下,因為行數不同。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

z9592447 發表於 2014-6-14 04:32 PM

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


20樓的在IE是DOM總管
21樓的在IE是偵錯工具
我不懂這2個有什麼區別....
還有偵錯工具裡那個原始碼不知道怎找文字= = 全部都找過了只有下載區外面的文字...
不像DOM總管你指到那條原始碼他就給你相對網頁上的標記位子
WebBrowser我不知道怎抓到跟DOM總管一樣的原始碼...
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

sam30525sam 發表於 2014-6-14 06:58 PM

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


IE的我不太了解~我最常用的是chrome,
你試試看我在18樓的方法,你自己轉成VB,
抓到的原始碼應該都一樣。

z9592447 發表於 2014-6-14 10:02 PM

問一下Stream這個是屬性嗎?
我在VB6 WebBrowser 裡找不到這個東西..<br><br><br><br><br><div></div>

z9592447 發表於 2014-6-14 10:34 PM

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

Set objhtml = doc.body.createtextrange()
If Not IsNull(objhtml) Then
Clipboard.Clear
Clipboard.SetText objhtml.htmltext
End If

z9592447 發表於 2014-6-16 09:59 AM

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

DocumentText
VB6好像沒有這個屬性= =
我打上去之後顯示錯誤...
頁: 1 [2]