抓抓網(wǎng)(抓抓網(wǎng)逃會(huì)手機(jī)定位嗎)
抓抓網(wǎng)
當(dāng)用戶通過web瀏覽器登錄到Internet時(shí),他們會(huì)向Web服務(wù)器請求一個(gè)網(wǎng)頁。服務(wù)器收到請求后,會(huì)做出響應(yīng),將設(shè)置好的頁面文檔發(fā)送到網(wǎng)頁瀏覽器的顯示界面,這是一個(gè)完整的網(wǎng)頁請求和處理的過程。網(wǎng)頁抓取就是在代碼過程中盡可能的模擬這個(gè)交互過程。
首先,在Excel中使用VBA可以抓取網(wǎng)站數(shù)據(jù)。
其次,無論是使用Python、java還是VBA來抓網(wǎng),都需要對HTTP協(xié)議、HTML(HyperTextMarkupLanguage)和DOM(DocumentObjectModel)有初步的了解。
此外,還介紹了一個(gè)軟件提琴手。網(wǎng)頁抓取的成功需要一個(gè)準(zhǔn)確真實(shí)的網(wǎng)站,模擬正確的請求消息,分析服務(wù)器響應(yīng)請求后返回的信息,這些數(shù)據(jù)都可以通過Fiddler軟件獲得。通過Fiddler可以很方便的找到內(nèi)容所在的網(wǎng)站。
今天就來簡單介紹一下如何獲取百度查詢結(jié)果——抓取百度查詢結(jié)果的數(shù)量。
1.首先打開Fiddler軟件,在瀏覽器中打開百度網(wǎng)站,搜索關(guān)鍵詞“網(wǎng)絡(luò)爬蟲”。
2.在Fiddler軟件中搜索“百度為你找到了相關(guān)結(jié)果”,如下圖所示。
3.單擊對話框中的第一個(gè)黃色數(shù)據(jù),然后單擊右側(cè)請求框中的[Raw]按鈕,查看發(fā)送請求的HTTP消息的詳細(xì)數(shù)據(jù)。請求的第一行如下。
開頭的GET是請求方法字段,結(jié)尾的HTTP/1.1是協(xié)議版本字段,其余信息是URL字段。因?yàn)檎埱笮惺褂肎ET方法,所以請求數(shù)據(jù)被附加到帶有“?”的URL上分開的URL和請求數(shù)據(jù),其中多個(gè)參數(shù)由“&”連接。
雖然傳輸數(shù)據(jù)的參數(shù)很多,但并不是所有的參數(shù)都是必須的。在請求框中選擇【W(wǎng)ebForms】頁簽,可以查看多個(gè)參數(shù)的名稱和對應(yīng)的值,其中百度搜索的關(guān)鍵詞“網(wǎng)絡(luò)爬蟲”位于參數(shù)wd下,如下圖所示。因此,URL可以簡化如下。
4.點(diǎn)擊請求框中的【Raw】按鈕可以查看響應(yīng)消息的詳細(xì)數(shù)據(jù),點(diǎn)擊框右下角的【ViewinNotepad】按鈕可以將相關(guān)數(shù)據(jù)轉(zhuǎn)換成記事本的文件形式。在記事本中,搜索關(guān)鍵詞“百度為你找到相關(guān)結(jié)果”,查看包含該關(guān)鍵詞的相關(guān)數(shù)據(jù)。
示例代碼如下。
第8行使用Open方法創(chuàng)建一個(gè)HTTP請求。Open方法的語法格式如下。
其中,參數(shù)bstrMethod表示HTTP的請求方法,本例中使用了GET方法。
參數(shù)bstrURL表示請求的地址。
參數(shù)varAsync是可選的,它的值是Boolean,表示請求是否是異步的。默認(rèn)值為True,這意味著由onReadyStatusChange屬性指定的回調(diào)函數(shù)將在其狀態(tài)更改時(shí)被調(diào)用。在VBA中,通常建議將該參數(shù)設(shè)置為False,表示請求是同步的,即在接收到返回的數(shù)據(jù)后將運(yùn)行下一條語句。
參數(shù)varuser和varpassword是可選參數(shù),指示服務(wù)器身份驗(yàn)證期間的用戶名和密碼。
第9行代碼使用Send方法發(fā)送HTTP請求并接收響應(yīng)。
10行代碼使用ResponseText屬性以字符串形式返回響應(yīng)信息,并將其提供給HTMLDocument對象的body元素。
第13行代碼使用Split函數(shù)獲取所需的目標(biāo)數(shù)據(jù)。
程序運(yùn)行結(jié)果如下圖所示。