【爬蟲獲取數據】&【無服務器軟件自更新】

自制工具   翰華Box:https://hanhuabox.lanzous.com/b00zjq9uf

翰華Box - 開發日誌:https://blog.csdn.net/qq_41517936/article/details/106409456

目錄

1、兩種獲取網站數據的途徑

 1.1、網頁源代碼直接獲取數據

1.2、發送get、post請求獲取json數據

1.2.1、幕布:https://mubu.com/doc/pKtGTPIH10

1.2.2、藍奏雲https://hanhuabox.lanzous.com/b00zjq9uf

1.2.3、酷我音樂:http://www.kuwo.cn/search/list?key=周杰倫

2、兩種網頁訪問的Windows API


這裏舉3個網站的例子,也是我目前正在用的。

1、幕布 - 寫筆記的網站,可用於軟件自更新,爬取筆記內容,獲得新版本的版本號等;

2、藍奏雲網盤 - 存放新版本程序,用於軟件自更新,也可以獲取新版本的版本號等;

3、酷我音樂 - 獲取歌曲的所有信息。

如果以下內容有說錯的地方,記得留言,我好改正一下,畢竟我也是新手。

1、兩種獲取網站數據的途徑

 1.1、網頁源代碼直接獲取數據

這個沒什麼好說的,打開目標網頁,右鍵查看網頁源代碼,頁面中的數據都在源代碼中,直接正則提取即可,如果源代碼中找不到數據,那麼就看1.2了,這裏我用藍奏雲展示下。

目標網址:翰華Box:https://hanhuabox.lanzous.com/b00zjq9uf,獲取版本相關信息。

我想獲取  話|說 的內容,首先看網頁源代碼,一看,有我想要的數據,那直接正則就完事了!

</div>
<div class="tet"><span class="teta">話</span><span class="teta tetb">說</span><span id="filename">hanhuabox版本:1.0.8¥強制更新:1.0.3¥更新時間:2020年6月29日¥更新地址:lanzouyun https://hanhuabox.lanzous.com/irYnRe4u8of¥更新內容:1、修復 - 定時提醒,運行一段時間後有概率閃退!;2、修復 - 自更新,獲取下載地址出錯!;hanhuabox</span></div><div class="d2">
<div class="nameh">文件名</div>
<div class="sizeh">大小</div>
<div class="timeh">時間</div>
</div>

問題來了,怎麼獲取網頁源代碼文本?我這裏用的是Windows API,WinHttp,網上有很多封裝好的庫或包,直接調用就行了,自己找找,找不到就自己寫吧2、兩種網頁訪問的Windows API

1.2、發送get、post請求獲取json數據

幕布、藍奏雲、酷我挨個講!

1.2.1、幕布:https://mubu.com/doc/pKtGTPIH10

1、打開網頁後先看下源代碼,沒有想要的數據,這時候返回網頁,右鍵 - 審查元素或F12 - 切換到Network - 刷新網頁

2、然後下面就會彈出來很多行數據,找關鍵的詞點開看看,右邊切換到Preview(預覽請求後得到的數據),找到想要的數據後就要看看這個數據是怎麼來的。

3、切換到Headers,需要做什麼就不用我說了吧,用WinInet或者WinHttp訪問,文章最後一部分有源碼,新問題:docId是怎麼來的呢?

4、重複2操作,然後發送請求(get不需要提交信息),得到json數據,自己提取就可以了(看2中的數據,還摻雜着沒用的數據,自己根據需要自行去除),3同理即可獲得數據(post的話要提交信息,例:3中post提交 docId:3vl8SzhQgjb,多個的話用&連接)。

有時發送請求的時候會有坑,後面講,這裏的操作都沒問題。

1.2.2、藍奏雲https://hanhuabox.lanzous.com/b00zjq9uf

這裏就不詳細講了,關於請求獲取數據,上面幕布的例子都講完了,就是這裏遇到一個坑(以前都沒事,就7.2號遇到的),當我在最後一步要獲取下載鏈接時,POST請求返回來的居然是空數據,然後我就蒙了,到處查資料,最後才知道原來是請求頭中Referer的問題(下圖中sign的值在網頁源代碼中有,正則提取)

Referer的作用之一:防盜鏈,判斷來源頁面,只允許此網站域名訪問關於Http請求header之Referer講解,所以在POST時需要注意附加的Referer地址。

1.2.3、酷我音樂:http://www.kuwo.cn/search/list?key=周杰倫

又是一個坑,本來我用的酷我音樂搜索api,是官方一個很老的api,結果最近提示502 Bad Gateway(現已恢復),沒辦法就直接去官網找了,結果一開始一直在糾結reqId的值,一直找不到,然後我就去掉這個參數去get請求,但是不管去不去掉返回的都是403 Forbidden,然後又是網上一頓查詢,結果發現是Cookie和csrf的問題!reqId並不需要,請求參數只要key(關鍵詞)、pn(第幾頁數據)、rn(每頁獲取的數據量)

什麼是CSRF?爲什麼CSRF Token寫在COOKIE裏面?

CSRF:跨站請求僞造,詳細的都在上面文章裏,這裏就不講了。請求時將Cookiehe和csrf帶上即可

 

2、兩種網頁訪問的Windows API

一般都有封裝好的庫或包,直接調用就行了,不需要自己寫!下面爲易語言源碼,只要會中文估計都懂。。

1、使用WinInet的API方式訪問網頁

2、使用WinHttp的對象方式訪問網頁

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章