VBA也能來爬蟲(抓取糗百糗圖)

2020-10-20 VBA說

最近一直在研究VBA網抓的東西,當然,爬蟲的話首選python語言,無奈還要從新學習python。聽說VBA也能用來網抓,就查找各方面關於VBA網抓的資料學習了一下。

模仿著,也寫出來了幾個簡單的網抓小程序,深深感受到,如果學精通了網抓,整個網際網路都是你的。 

這次分享的是網抓糗事百科糗圖前30頁所有糗圖的代碼,當然其他網站的圖片也是可以批量抓取的...比如百度圖片、1024、此處省略。

一、思路,最重要的還是思路。

打開糗事百科主頁,糗圖頁面。通過xmlhttp對象循環得到每一頁的網頁代碼,通過正則表達式,在網頁代碼中找到圖片的真實網頁地址,然後依次打開網址,把圖片保存到本地。

理論回頭學會了我再慢慢分享,現在我也屬於比葫蘆壺瓢階段,畢竟,興趣是最好的老師。

二、效果及代碼

我們先上效果和代碼,我都迫不及待展示了。

效果:

奉上代碼:

網抓具有時效性,網站不是一成不變的,有可能過陣子代碼就失效了,所以,思路很重要,學會思路就可以。

Sub 下載糗事百科圖片()

    Dim b() As Byte

    For pagenum = 1 To 30

        Dim xmlhttp As Object

        Set xmlhttp = CreateObject("MSXML2.XMLHTTP")

        strurl = "https://www.qiushibaike.com/pic/" & "page/" & pagenum

        xmlhttp.Open "GET", strurl, False

        xmlhttp.send

        Do While xmlhttp.ReadyState <> 4

            DoEvents

        Loop

        strText = xmlhttp.responseText

        Set reg = CreateObject("vbscript.regexp")

        reg.Global = True

        reg.IgnoreCase = True

        reg.MultiLine = True

        reg.Pattern = "pic.qiushibaike.com/system/pictures/\d+/\d+/medium/app\d+.jpeg"

        Set Match = reg.Execute(strText)

        For Each mat In Match

            n = n + 1

            xmlhttp.Open "GET", "https://" & mat, False

            xmlhttp.send

            Do While xmlhttp.ReadyState <> 4

                DoEvents

            Loop

            b = xmlhttp.responseBody

            Open ThisWorkbook.Path & "\圖片\" & n & ".jpg" For Binary As #1

            Put #1, , b

            Close

        Next

    Next

    MsgBox "完成"

End Sub

說幾個知識點:

① reg.Pattern = "pic.qiushibaike.com/system/pictures/\d+/\d+/medium/app\d+.jpeg"

這裡是為了通過正則匹配到圖片的真實網址。

②  b = xmlhttp.responseBody

     Open ThisWorkbook.Path & "\圖片\" & n & ".jpg" For Binary As #1

     Put #1, , b

     Close

把傳輸的照片寫入圖片文件,需要以二進位形式打開並保存。

三、VBA網抓常用方法

1、xmlhttp/winhttp法:
用xmlhttp/winhttp模擬向伺服器發送請求,接收伺服器返回的數據。
優點:效率高,基本無兼容性問題。
缺點:需要藉助如fiddler的工具來模擬http請求。
2、IE/webbrowser法:
創建IE控制項或webbrowser控制項,結合htmlfile對象的方法和屬性,模擬瀏覽器操作,獲取瀏覽器頁面的數據。
優點:這個方法可以模擬大部分的瀏覽器操作。所見即所得,瀏覽器能看到的數據就能用代碼獲取。
缺點:各種彈窗相當煩人,兼容性也確實是個很傷腦筋的問題。上傳文件在IE裡根本無法實現。
3、QueryTables法:
因為它是excel自帶,所以勉強也算是一種方法。其實此法和xmlhttp類似,也是GET或POST方式發送請求,然後得到伺服器的response返回到單元格內。
優點:excel自帶,可以通過錄製宏得到代碼,處理table很方便
。代碼簡短,適合快速獲取一些存在於原始碼的table裡的數據。
缺點:無法模擬referer等發包頭
引自:http://club.excelhome.net/thread-1159783-1-1.html
吳姐寫的教程

本次分享的小程序用到的用的就是第一種方法中的xmlhttp法

xmlhttp法常用代碼框架:

Sub Main()

    DimstrText As String

    With CreateObject("MSXML2.XMLHTTP")

        .Open "GET", "", False

        .send

        strText = .responseText

        Debug.Print strText

        EndWith

End Sub

簡單的網頁,只需要填空就行。複雜的需要涉及到工具分析。

這次先分享到這裡,VBA網抓會繼續學習,爭取抓取出海量有深度的內容。

相關焦點

  • Python3抓取糗百、不得姐
    3. urllib3(1.19.1);主要思路整個程序,按照下面的步驟:1.獲取要爬取頁面的URL地址(可以是分頁地址,可以在程序裡面模擬分頁);2.通過requests(一個封裝了urllib3的網絡庫,簡化了很多網絡請求的東西)下載上面URL地址的內容到內存(以前的方式是保存臨時文件);3.用BeautifulSoup(一個解析HTML的庫)來讀取第二步中保存在內存中的內容
  • 「爬蟲」相關罪名分析(上篇)——「爬蟲」犯了什麼罪?
    近日,51信用卡也被警方調查,傳言可能涉及委託外包催收公司尋釁滋事犯罪(警方披露的信息已證實)、非法獲取公民個人信息犯罪(未經警方證實,但警方通報中「等犯罪行為」是否包括此種行為暫不可知),其中「非法獲取公民個人信息犯罪」,也涉及「爬蟲」問題,再一次把「爬蟲」問題推至風口浪尖。
  • 數據從業者必讀:抓取了一千億個網頁後我才明白,爬蟲一點都不簡單
    成立於2010年的Scrapinghub是領先的數據析取公司之一,也是當今最健壯和流行的web爬蟲框架Scrapy的作者。目前Scrapinghub每月抓取許多全球最大型電子商務公司的頁面數超過80億(其中30億是產品頁面)。
  • 「爬蟲」相關罪名分析(下篇)——爬蟲相關商業模式的刑事合規
    如數據公司,其以出售數據,或利用數據搭建進一步的平臺獲取經濟利益作為商業模式,「在大數據風控行業中,以網絡爬蟲獲取信息數據的做法最為盛行」。利用爬蟲抓取數據時,便可能會涉嫌上文所講到的違法犯罪問題。很多技術人員,或許就像《只因寫了一段爬蟲,公司200多人被抓!》一文中涉案技術人員所認為的那樣:「自己只是一名技術人員而已,所有的工作也都是按照領導要求來執行的,應該很快就會把我們釋放了吧。」而沒有意識到問題的嚴重性。從「快播」案來看,「技術中立」或「技術無罪」的抗辯,顯然不能為司法機關接受、採納。因此,不能因為爬蟲只是「技術手段」,而輕易就認為爬蟲無罪。
  • Python新手爬蟲,簡單製作抓取廖雪峰的教程的小爬蟲
    先看幾張對比圖,分別是官網截圖和抓取下來的 txt文檔的截圖,不算那難看的排版的話,內容是一致的,圖片用 url替換了!Python 數據處理 Python編程從入門到實踐 核心編程基礎教程 網絡爬蟲入門書籍 python視頻編程從入門到精通 程序設計教材人民郵電¥72.2領3元券話不多說,先來看看整個爬蟲過程吧!
  • R語言爬蟲系列6|動態數據抓取範例
    R雖然是以一門統計分析工具出現在大多數人印象中的,但其畢竟本質上是一門程式語言,對於爬蟲的支持雖不如Python那樣多快好省,但悉心研究一下總能做出一些讓你驚喜的效果。 大約很早之前,小編就寫過關於R語言爬蟲新貴rvest的抓取介紹,之前說rvest+SelectGadgetor是結構化網頁抓取的實戰利器,大家的溢美之詞不斷。
  • 李唐SEO:伺服器反爬蟲攻略:nginx禁止某些User Agent抓取網站
    網絡上的爬蟲非常多,有對網站收錄有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots規則對伺服器造成壓力,還不能為網站帶來流量的無用爬蟲,比如宜搜蜘蛛(YisouSpider)。進入到nginx安裝目錄下的conf目錄,將如下代碼保存為 agent_deny.confcd /usr/local/nginx/confvim agent_deny.conf#禁止Scrapy等工具的抓取 if ($http_user_agent
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?網絡爬蟲,也叫作網絡數據採集,是指通過編程從Web伺服器請求數據(HTML表單),然後解析HTML以提取所需的數據。
  • Python新手都可以做的爬蟲,抓取網上 OJ 題庫信息
    最近有朋友在做 OJ 題庫,順手做個小爬蟲,導出一份題庫列表來看看!就是 Number 後面的頁數變了,其他的都沒變,這樣就很方便構建循環了,在來看看源碼中題目的 title 和 Id 以及 url 的位置是不是很明顯,在 a 標籤的屬性中有具體的 URL,包括 ID 也在 URL 中出現,而 title在 font 標籤中出現了,這樣就很簡單了,我們直接用 xpath 抓取 td 標籤,然後匹配出url 和 title,並且切割 url 把 id 也寫出來
  • Python——爬蟲
    2、聚焦爬蟲聚焦爬蟲是面向特定主題需求的一種網絡爬蟲程序。它與通用搜尋引擎爬蟲的區別在於:聚焦爬蟲在實施網頁抓取時會對內容進行處理篩選,儘量保證只抓取與需求相關的網頁信息。>2)、正則表達式,能通過正則表達式提取在網頁中的信息,比如特殊的文字,連結信息等;3)、會使用Xpath等獲取一些DOM結構中的節點信息;4)、要知道什麼是深度優先和廣度優先的抓取算法及實踐中的使用規則;5)、能分析簡單的網站結構,會使用urllib或requests庫進行簡單的數據抓取
  • Python爬蟲很難,那是你沒有掌握爬蟲的思想,看看大神如何來分析
    我們大神們通常有一種解決思路(或者說是流程),如果你看到有些大神直接跳過了這些流程,是因為它一眼就能夠分析出這一步需不需要(也就是說,其實他還是思考過這一個步驟的,只是思考之後迅速排出了而已。)1.什麼是爬蟲爬蟲,即網絡爬蟲,大家可以理解為在網絡上爬行的一隻蜘蛛,網際網路就比作一張大網,而爬蟲便是在這張網上爬來爬去的蜘蛛咯,如果它遇到資源,那麼它就會抓取下來。想抓取什麼?這個由你來控制它咯。
  • Python爬蟲是什麼意思有啥用 python爬蟲原理實例介紹
    據華為中國官方消息,今日,華為中國發文《小白看過來,讓Python爬蟲成為你的好幫手》,文中詳細介紹了Python爬蟲的工作原理,我們來看一下吧。  以下為《小白看過來,讓Python爬蟲成為你的好幫手》全文:  隨著信息化社會的到來,人們對網絡爬蟲這個詞已經不再陌生。
  • 使用 Scrapy 快速抓取網頁
    你也可以繼承 scrapy 中的 item 類創建自定義的模型(比如 Product)。middlewares.py 用於修改請求/響應的生命周期的中間件。例如,你可以創建一個中間件來替換使用用戶代理,或者使用類似 ScrapingBee 的 API 來替換原有的請求。
  • Python 爬蟲入門
    從而爬蟲工程師、數據分析師、大數據工程師的崗位也越來越受歡迎。爬蟲是 Python 應用的領域之一。有 Python 基礎對於學習 Python 爬蟲具有事半功倍的效果。就像學英語一樣,一個對英語一概不通的人聽完別人讀英語,自己也能讀出來,但要把英語讀好,學好音標非常有必要。
  • 屏蔽蜘蛛抓取的後果
    爬蟲是搜尋引擎用來抓取網站的一套自動化程序,是搜尋引擎基本原理所必須的一環,屏蔽爬蟲抓取之後,搜尋引擎蜘蛛將無法抓取網站。除了有品牌保護的品牌詞會排名第一,其他關鍵詞的排名基本會消失,甚至索引也會被清除。
  • 華為官方解析何為Python爬蟲
    以下為《小白看過來,讓Python爬蟲成為你的好幫手》全文: 隨著信息化社會的到來,人們對網絡爬蟲這個詞已經不再陌生。但什麼是爬蟲,如何利用爬蟲為自己服務,這些在ICT技術小白聽起來又有些高入雲端。不用愁,下面一文帶你走近爬蟲世界,讓即使身為ICT技術小白的你,也能秒懂使用Python爬蟲高效抓取圖片。
  • 爬蟲學得好,監獄進得早——兼談遊戲推廣中如何合法使用爬蟲技術
    robtes.txt,也稱為爬蟲協議、機器人協議等,全稱是「網絡爬蟲排除標準」(Robots Exclusion Protocol),是國際網際網路界為了兼顧保障搜索技術服務於人類,逐步確立起的通行的道德規範。
  • 【法學匯】網絡爬蟲的入罪標準與路徑研究
    網絡爬蟲(Web Crawler),又稱網絡蜘蛛或者網絡機器人,是一種按照一定規則自動抓取網際網路信息的程序。在大數據時代,網絡爬蟲已成為網際網路抓取公開數據的常用工具之一,可以實現對文本、圖片、音頻、視頻等網際網路信息的海量抓取。網絡爬蟲相關訴訟糾紛引發了學界在私法層面對大數據權益屬性、權益分配的諸多法律爭議,以及在公法層面對網絡爬蟲刑法規制路徑的諸多探討。
  • 網絡爬蟲違法?扯!繼續學習我的第一個爬蟲
    網絡爬蟲領域目前還屬於早期的拓荒階段,雖然網際網路世界已經通過自身的協議建立起一定的道德規範(Robots協議),但法律部分還在建立和完善中。從目前的情況來看,如果抓取的數據屬於個人使用或科研範疇,基本不存在問題;而如果數據屬於商業盈利範疇,就要就事而論,有可能屬於違法行為,也有可能不違法。
  • 【耿檢轉播】【法學匯】網絡爬蟲的入罪標準與路徑研究
    網絡爬蟲(Web Crawler),又稱網絡蜘蛛或者網絡機器人,是一種按照一定規則自動抓取網際網路信息的程序。在大數據時代,網絡爬蟲已成為網際網路抓取公開數據的常用工具之一,可以實現對文本、圖片、音頻、視頻等網際網路信息的海量抓取。網絡爬蟲相關訴訟糾紛引發了學界在私法層面對大數據權益屬性、權益分配的諸多法律爭議,以及在公法層面對網絡爬蟲刑法規制路徑的諸多探討。