長話短說,最近真有點忙,現(xiàn)在才寫第一篇關(guān)于真正關(guān)于爬蟲的文章,本篇只是粗略講解如何爬取順豐官網(wǎng)展示的價格和時效。爬蟲按照網(wǎng)頁類型不同,可以分為靜態(tài)網(wǎng)頁爬蟲和動態(tài)網(wǎng)頁爬蟲。動態(tài)網(wǎng)頁的爬蟲大致可以分為三步:①分析請求;②代碼實現(xiàn);③檢測反爬。代碼寫完無問題后,基本就可以做到批量爬取了。
一、爬蟲第一步,分析請求
打開瀏覽器,進入順豐速運官網(wǎng),進入運費時效價格查詢界面,鼠標(biāo)右鍵點擊后選擇檢查,進入開發(fā)者模式(筆者使用谷歌瀏覽器,不同瀏覽器殊途同歸),點擊network。如果對瀏覽器開發(fā)者模式不習(xí)慣,可以選擇使用fiddler進行抓包分析,教程網(wǎng)上一大堆,在這就不細講啦。
此時可以嘗試輸入始發(fā)地、目的地、重量、寄件時間后點擊查詢,如下圖所示,順豐官網(wǎng)向服務(wù)器發(fā)送的是城市代碼,重量和時間數(shù)據(jù)。
劃重點:核心點要知道向哪個網(wǎng)址發(fā)送請求,采取哪種方式(Get或Post),請求頭的內(nèi)容,請求發(fā)送的數(shù)據(jù),按上述說的五點,寫好代碼一般就能拿到數(shù)據(jù)了。但越來越多的網(wǎng)站已經(jīng)開始在前臺利用JS代碼按照一定的加密規(guī)則生成一段密匙,照樣能爬,只不過需要看懂JS代碼,這個是后話。
AJAX請求,正常服務(wù)器返回的是JSON數(shù)據(jù),可以看下Response中返回的JSON數(shù)據(jù)。
對JSON數(shù)據(jù)美化后的樣子是這樣滴。
可以很自豪的說:終于拿到順豐了順豐的時效價格數(shù)據(jù)。但這只是萬里長征第一步...
順豐官網(wǎng)爬蟲難度比較大的一點是城市代碼從哪來的???這里就不嗦了,就直接告訴大家答案。
劃重點:城市代碼的來源是點擊原寄地或目的地后,根據(jù)你的選擇,一步步向服務(wù)器發(fā)送請求得來的。大概的流程是選擇省并點擊-返回省下邊所有市及編碼-頁面拿到市數(shù)據(jù)并向用戶展示-用戶選擇市并點擊-返回市下邊所有的縣及其編碼。
二、代碼實現(xiàn)
寫代碼,真的要做好解決各種BUG的準(zhǔn)備...有的時候,一個BUG能搞了一個小時,很絕望!
一般爬蟲經(jīng)常使用到的庫主要有requests,pyquery,pandas,selenium等等等,庫很多,但都殊途同歸。直接上代碼,就不詳細展開講了。
三、測試反爬
一般主流的反爬機制有檢測IP短時間訪問次數(shù)、文字&字母驗證碼、圖片驗證碼、短信驗證碼等等,不同的驗證碼解決手段有較大差異。
劃重點:對應(yīng)反爬的解決方式主要有以下方式
1.檢測IP:限定爬蟲頻率或定期更換高匿名IP;
2.文字&圖片驗證碼:一般需要利用機器學(xué)習(xí);
3.圖片驗證碼(選擇圖片或滑動滑塊):一般利用專業(yè)三方機構(gòu)提供的接口輔助驗證,即把后臺返回的圖片利用api發(fā)送給三方機構(gòu)服務(wù)器后返回數(shù)據(jù);
順豐反爬的手段相對簡單些,就是檢測IP短時間訪問量,訪問多了,就會被封IP。相應(yīng)的解決方案也非常簡單,即生成一個0-1之間的隨機描述,讓程序沉睡下,就可以了。
不懂Python或爬蟲的,可能看不太懂。沒關(guān)系,一開始我也懵逼,只要有個積跬步至千里的信念和興趣...
來源|破譯汽車物流供應(yīng)鏈背后的京東力量:從LEED金級BTS定制倉到7個月全托管高質(zhì)量交付
4136 閱讀快運江湖的“老大哥”回來了!
1692 閱讀?深圳市道路貨運零排放走廊建設(shè)啟動大會圓滿落幕,雙輪驅(qū)動推動綠色轉(zhuǎn)型
969 閱讀關(guān)于河南伍伍品牌管理有限公司2025年度倉儲服務(wù)、物流運輸服務(wù)的招標(biāo)公告
834 閱讀永輝下半年擴張前置倉
802 閱讀2024年快遞業(yè)務(wù)收入完成1.4萬億元,業(yè)務(wù)量完成1750.8億件
807 閱讀避雷!某貿(mào)易公司碰瓷中國物流
737 閱讀中國郵政第28條國際航線,”杭州=東京“貨運航線開通
714 閱讀順豐助力抖音即時零售商家新鮮次日達
704 閱讀Temu前置倉投入使用
715 閱讀