python微信开发实例 pdf 百度网盘_用python看女神微信里的百度云资源有啥?
最近小編一直苦心研究,怎么給大家發放更多的資料和資源鏈接。大家都知道,百度云的分享鏈接是很容易被和諧的,群里除了分享鏈接外,就是各種抱怨 “怎么又失效了”,“又和諧了...”。
需求:
1、爬取微信群里的百度云分享鏈接
2、將資源轉存到自己的網盤
涉及:
1、正則表達式
2、如何分析cookie和api
3、selenium(webdriver)
本篇文章目錄:
1.、爬取微信群聊信息里的網盤資源
2、尋找并分析百度云的轉存api
3、爬取shareid、from、filelist,發送請求轉存到網盤
4、完整代碼
5、參考
爬取微信群聊信息里的網盤資源
爬取微信群聊信息可以用微信網頁版的api,這里推薦一個高度封裝,使用簡單的工具:wxpy: 用 Python 玩微信
這是個不錯的工具,可以實現網頁版微信的所有功能,之前小編利用它還實現了機器人聊天功能,自己的個人賬號華麗轉變?微軟小冰?。雖然微軟還沒有公開小冰的 api ,不過我們完全可以利用這個工具的轉發功能來實現,思路很簡單,微信上領養一個小冰,把別人說的話轉發給小冰,再把小冰說的話轉發回去。
扯遠了,總之利用這個工具,就可以對微信群聊里的信息進行監聽,接著就是利用正則表達式把網盤鏈接抓取出來。具體的代碼我就不貼了,使用起來很簡單。
尋找并分析百度云的轉存api
這個部分才是我們的重點,首先你得有一個百度云盤的賬號,然后登錄,用瀏覽器(這里用火狐瀏覽器做示范)打開一個分享鏈接。F12打開控制臺進行抓包。手動進行轉存操作:全選文件->保存到網盤->選擇路徑->確定。點擊【確定】前建議先清空一下抓包記錄,這樣可以精確定位到轉存的api,這就是我們中學時學到的【控制變量法】2333。
可以看到上圖中抓到了一個帶有 “transfer” 單詞的 post 請求,這就是我們要找的轉存(transfer)api 。接下來很關鍵,就是分析它的請求頭和請求參數,以便用代碼模擬。
點擊它,再點擊右邊的【Cookies】就可以看到請求頭里的 cookie 情況。
cookie分析:
因為轉存是登錄后的操作,所以需要模擬登錄狀態,將與登錄有關的 cookie 設置在請求頭里。我們繼續使用【控制變量法】,先將瀏覽器里關于百度的 cookie 全部刪除(在右上角的設置里面,點擊【隱私】,移除cookies。具體做法自己百度吧。)
然后登錄,右上角進入瀏覽器設置->隱私->移除cookie,搜索 "bai" 觀察 cookie 。這是所有跟百度相關的 cookie ,一個個刪除,刪一個刷新一次百度的頁面,直到刪除了?BDUSS?,刷新后登錄退出了,所以得出結論,它就是與登錄狀態有關的 cookie
同理,刪除掉?STOKEN?后,進行轉存操作會提示重新登錄。所以,這兩個就是轉存操作所必須帶上的 cookie 。
弄清楚了 cookie 的情況,可以像下面這樣構造請求頭。
除了上面說到的兩個 cookie ,其他的請求頭參數可以參照手動轉存時抓包的請求頭。這兩個 cookie 預留出來做參數的原因是 cookie 都是有生存周期的,過期了需要更新,不同的賬號登錄也有不同的 cookie 。
參數分析:
接下來分析參數,點擊【Cookies】右邊的【Params】查看參數情況。如下:
上面的query string(也就是?后跟的參數)里,除了框起來的shareid、from、bdstoken需要我們填寫以外,其他的都可以不變,模擬請求的時候直接抄下來。
前兩個與分享的資源有關,bdstoken與登錄的賬號有關。下面的form data里的兩個參數分別是資源在分享用戶的網盤的所在目錄和剛剛我們點擊保存指定的目錄。
所以,需要我們另外填寫的參數為:shareid、from、bdstoken、filelist 和 path,bdstoken 可以手動轉存抓包找到,path 根據你的需要自己定義,前提是你的網盤里有這個路徑。其他三個需要從分享鏈接里爬取,這個將在后面的【爬取shareid、from、filelist,發送請求轉存到網盤】部分中進行講解。
搞清楚了參數的問題,可以像下面這樣構造轉存請求的 url 。
以上面這個資源鏈接為例,我們先用瀏覽器手動訪問,F12 打開控制臺先分析一下源碼,看看我們要的資源信息在什么地方。控制臺有搜索功能,直接搜 “shareid”。
定位到4個shareid,前三個與該資源無關,是其他分享資源,最后一個定位到該 html 文件的最后一個標簽塊里。雙擊后可以看到格式化后的 js 代碼,可以發現我們要的信息全都在里邊。如下節選:
可以看到這兩行
yunData.SHARE_ID = "3927175953";
yunData.SHARE_UK = "140959320"; // 經過對比,這就是我們要的 "from"
yunData.PATH 只指向了一個路徑信息,完整的 filelist 可以從 yunData.FILEINFO 里提取,它是一個 json ,list 里的信息是Unicode編碼的,所以在控制臺看不到中文,用Python代碼訪問并獲取輸出一下就可以了。
直接用request請求會收獲 404 錯誤,可能是需要構造請求頭參數,不能直接請求,這里博主為了節省時間,直接用selenium的webdriver來get了兩次,就收到了返回信息。第一次get沒有任何 cookie ,但是baidu 會給你返回一個BAIDUID ,在第二次 get 就可以正常訪問了。
yunData.FILEINFO 結構如下,你可以將它復制粘貼到json.cn里,可以看得更清晰。
清楚了這三個參數的位置,我們就可以用正則表達式進行提取了。代碼如下:
寫在最后
喜歡此篇文章或覺得這篇文章對你有幫助的讀者可以點播關注或者轉發,加小編Python學習群:832339352即可獲得小編自己整理的一份2018最新的Python資料和0基礎入門教程,歡迎初學和進階中的小伙伴
總結
以上是生活随笔為你收集整理的python微信开发实例 pdf 百度网盘_用python看女神微信里的百度云资源有啥?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux内核之旅ppt_一起玩转 Li
- 下一篇: python顺时针旋转_Python之二
