爬蟲的一些小技巧總結

一、在爬蟲中,爬取的數據類型如下
1.document:返回的是一個HTML文檔
2.png:無損的圖片,jpg:壓縮后的圖片,wbep:有損壓縮,比png差,比jpg好
3.avg+xml圖像編碼字符串
4.script:腳本文件,依據一定格式編寫的可執行的文件
5.gif:圖像交換格式
6.xhr:返回的是json數據類型,在沒有刷新整個網頁的情況下,更新部分網頁,也稱Ajax請求
7.包后綴是css意味著其是css樣式
二、
1.幾個快捷進入開發者工具的指令:?
打開開發者工具方法:F12(鍵盤)/fn+f12/ctrl+shift+i
2.列表轉字符串方法:
str.join(列表)
如'\n'.join(selector.css('.noveContent p ::text').getall())
3.files = os.listdir(filename)? # 獲取文件夾下所有的小視頻
with zipfile.ZipFile(filename+title+'.mp4',mode='w') as z:
? ? ? ? z.write(content)
?4.print(response.text)后,在下方,按住ctrl+f鍵可以搜索如下圖
d5f2ced75a854b12b8564d70ce546d1a.png
?點擊:95f411d26699418e886e3e4c8dafd339.png
點擊.*可以用正則表達式,如果用正則表達解析數據,可以在這里嘗試,可以看見匹配的數量,然后再寫入代碼中。
5.列表中嵌套元祖,如何快速找出元祖中的元素。
如:a=[(1,'as'),(2,'ajsh'),(781,'ajhsasa')]
04c07180d44744c2851321ae0209ac72.png
bcedd1fe514e49479e0f1f9bd71140da.png
用第二張圖的方法,可以直接取出元素
6.遇到參數很多,加冒號很麻煩怎么辦,如下圖:
?6656f636412e4384804666a55d2423f1.png
?首先選中代碼,按ctrl+r出現下圖:72f08f93e4f0487ea429ac78243182a8.png
點擊·*進入正則,寫入下圖:2611a7dd0a3f4c328900561e1ad14d5d.png?
代碼是:?(.*?): (.*)
'$1': '$2',
點擊replaceall
結果展現:ce9bfcd0941b41519cee4857aba9985b.png

服務器端通常在接收?POST?請求時,根據請求頭中的?Content-Type?字段來判斷請求體的格式。如果?Content-Type?設置為?application/json,則服務器端會期望接收?JSON?格式的請求體數據。這在前后端分離的?Web?應用中比較常見,因為前端通常使用?JavaScript?或其他語言發送?JSON?格式的數據給后端。

以下是一些常見的情況,服務器端可能會要求?JSON?格式的請求體:

RESTful?API:?許多基于?REST?架構的?Web?服務要求客戶端發送?JSON?格式的數據給服務器端,以便執行?CRUD(創建、讀取、更新、刪除)操作。

前后端分離應用:?在前后端分離的應用中,前端通常發送?JSON?格式的數據給后端,后端再根據接收到的?JSON?數據進行處理。

某些框架或庫要求:?某些后端框架或庫可能要求客戶端發送?JSON?格式的數據給服務器端,以便與服務器端進行交互。

Webhooks:?一些?Webhooks?可能要求發送?JSON?格式的數據給指定的?URL,以便觸發某些操作。

在這些情況下,客戶端通常需要將數據序列化為?JSON?格式,并將?Content-Type?設置為?application/json,以便服務器端能夠正確解析請求體中的數據?

服務器端通常在接收?POST?請求時,根據請求頭中的?Content-Type?字段來判斷請求體的格式。如果?Content-Type?設置為?application/x-www-form-urlencoded?或?multipart/form-data,則服務器端會期望接收表單格式的請求體數據。

以下是一些常見的情況,服務器端可能會要求表單格式的請求體:

傳統?Web?表單提交:?在傳統的?Web?應用中,用戶通過?HTML?表單提交數據給服務器端時,通常使用表單格式的請求體數據。

文件上傳:?當表單中包含文件上傳字段時,通常使用?multipart/form-data?格式提交請求體數據。

某些框架或庫要求:?某些后端框架或庫可能要求客戶端以表單格式提交數據給服務器端,以便與服務器端進行交互。

部分?API?接口:?一些?API?接口可能要求客戶端以表單格式提交數據,而不是?JSON?格式,這取決于接口的設計和需求。

在這些情況下,客戶端通常需要將數據編碼為表單格式,并將?Content-Type?設置為?application/x-www-form-urlencoded?或?multipart/form-data,以便服務器端能夠正確解析請求體中的數據。

二、視頻類爬蟲總結
爬取短視頻類型的數據一般步驟:
1.點擊media,刷新,播放一個視頻,會刷新一個包,點擊發現是播放視頻的包,
2.復制這個包url中的關鍵字,在搜索框中進行搜索,看有哪些包有關鍵字。
3.搜索后找到有play_url的包
4.看這個包的url,觀察有什么規律
5.以糖豆視頻為例,發現這個包的url有參數vid
6.查找參數在哪個位置
7.在xhr 動態加載中找到包,發現其中json數據中有vid的數據。
8.訪問xhr 中的包獲取vid數據,利用獲取到的vid數據拼湊含有play_url的包的鏈接,訪問這個鏈接,獲取play_url
9.多頁爬取,觀察xhr 包的鏈接有什么規律,發現參數為頁數,即可多頁爬取
注意:訪問視頻play_url時,爬取短視頻類型,headers中把user-agent,cookie,refer全部加上
爬取長視頻的一般步驟:長視頻通常以m3u8的格式存在,找包的過程與上述一致,找的是ts格式的文件,但一般存在于xhr下面。小技巧,若通過參數找不到就直接搜索m3u8,說不定可以找到終極目標是找到一個包能返回下面的界面

不同的網站,這個包找的地方不同,A站中搜索就可以找到,騰訊視頻則先要找到一個含m3u8的包,從里面提取出一個鏈接,再訪問這個鏈接,得到上面的界面。?
下載時,要下載為ts的視頻格式,多的一步是將文件合成。
可以將多個ts包合成一個下載代碼:
  with open('斗羅大陸.mp4',mode='ab') as f:f.write(ts_content)
三、打包exe與制表庫的使用
?1.制表模塊使用prettytable
from prettytable import PrettyTable
tb = PrettyTable()      # 實例化一個對象
tb.field_names = ['序號','歌手','歌名'] # 設置字段名
tb.add_row([num,singer,song_name]) # 寫入表格行

2. 將python文件打包成exe文件
首先,在項目中下載pyinstaller包pip install pyinstaller
然后在需要打包的python文件目錄路徑下輸入cmd

在終端輸入:pyinstaller -F 文件名.py
成功后會出現dit的文件夾,里面有exe的文件?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717381.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717381.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【大廠AI課學習筆記NO.58】(11)混淆矩陣

混淆矩陣(confusion matrix)—— 混淆矩陣(Confusion Matrix)是人工智能領域,特別是在機器學習和深度學習中,用于衡量分類模型性能的重要工具。它通過統計分類模型的真實分類與預測分類之間的結果&#xf…

【python debug】python常見編譯問題解決方法_2

序言 記錄python使用過程中碰到的一些問題及其解決方法上一篇:python常見編譯問題解決方法_1 1. PermissionError: [Errno 13] Permission denied: ‘/lostfound’ 修改前: 修改后(解決): 此外,可能文件夾…

leetcode 熱題 100_接雨水

題解一: 按列求:分別考慮每一列的雨水高度,某列的雨水高度只與其左側最高墻和右側最高墻有關,一種情況是該列比左右側的墻都低,則根據木桶效應該列雨水高度為min(左側墻高,右側墻高)-列高,而其余…

智能駕駛及相關零部件攝像頭毫米波雷達激光雷達和芯片滲透率

一、總體情況 乘聯會數據顯示,1月1日至1月28日,全國乘用車廠商新能源車批發銷量為56.7萬輛,同比增長76%,環比下降38%;國內新能源車市場零售銷量為59.6萬輛,同比增長92%,環比下降24%。 二、銷…

考研總計劃(基礎篇)

分為數學,專業課,英語三個部分 數學規劃表 高數基礎:3月初到4月15號 具體實行計劃:分為看課日和寫題日 看課日:早上10點到12點半看課,19:30到21:30繼續看課。 寫題日:早上10點到12點半復習前一天的題目&#xff0…

【word】引用文獻如何標注右上角

一、在Word文檔中引用文獻并標注在右上角的具體步驟如下 1、將光標移動到需要添加文獻標注的位置: 2、在文檔上方的工具欄中選擇“引用”選項: 3、點擊“插入腳注”或“插入尾注”: ①如果選擇的是腳注,則腳注區域會出現在本頁的…

多路轉接之epoll

常用的三個API: epoll_create(); //例如 int epfd epoll(10);創建一棵有10個結點的紅黑樹,注意:這個數只是對內核建議的數值,內核參照這個參數去構建epoll_ctrl();//參數2 op可以取值 EPOLL_CTL_ADD/MOD/DELevents:EPOLLIN/…

Professor教誨-學術筆記1

關于指導學生 自己帶的學生,要把文章從頭到尾檢查好了,再發給professor要至少留給professor一周的時間改文章,太遲了不如放棄DDL要在合作中,充分尊重合作者認真對待向別人求推薦信這件事,別人找你推薦也要慎重&#x…

成為大佬之路--linux軟件安裝使用第000000025篇--linux docker安裝mysql

安裝 1.拉取鏡像 docker pull centos/mysql-57-centos7 2.啟動mysql docker run -di --nametensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 centos/mysql-57-centos7

Pyglet圖形界面版2048游戲——詳盡實現教程(上)

目錄 Pyglet圖形界面版2048游戲 一、色塊展示 二、繪制標題 三、方陣色塊 四、界面布局 五、鍵鼠操作 Pyglet圖形界面版2048游戲 一、色塊展示 準備好游戲數字的背景顏色,如以下12種: COLOR ((206, 194, 180, 255), (237, 229, 218, 255), (23…

常見Vue原理面試題

1. Vue的響應式原理是什么?請詳細說明Object.defineProperty()和Proxy的區別和用法。 響應式原理:Vue中采用了數據劫持的方式,通過Object.defineProperty()函數來監聽數據變化,并在數據變化時觸發對應的更新函數。 Object.define…

SpringCloud負載均衡源碼解析 | 帶你從表層一步步剖析Ribbon組件如何實現負載均衡功能

目錄 1、負載均衡原理 2、源碼分析 2.1、LoadBalanced 2.2、LoadBalancerClient 2.3、RibbonAutoConfiguration 2.4、LoadBalancerAutoConfiguration 2.5、LoadBalancerIntercepor? 2.6、再回LoadBalancerClient 2.7、RibbonLoadBalancerClient 2.7.1、DynamicServe…

OpenCV 4基礎篇| OpenCV圖像的拼接

目錄 1. Numpy (np.hstack,np.vstack)1.1 注意事項1.2 代碼示例 2. matplotlib2.1 注意事項2.2 代碼示例 3. 擴展示例:多張小圖合并成一張大圖4. 總結 1. Numpy (np.hstack,np.vstack) 語法結構: retval np.hstack(tup) # 水平…

工作日記:JavaScript fill() 方法

定義 fill() 方法用于將一個固定值替換數組的元素。 語法 array.fill(value, start, end) value:必填。要填充的值 start:可選。開始填充位置 end:可選。結束填充位置(默認是數組的長度:array.length)…

提取拼多多店鋪商家電話的爬蟲軟件

拼多多是中國知名的團購電商平臺,許多用戶在購物時都希望能夠直接聯系到店鋪商家,以便獲得更多的產品信息或解決問題。在這篇文章中,我們將介紹如何使用Python編寫一個爬蟲軟件,來提取拼多多店鋪商家電話。 首先,我們…

c++之通訊錄管理系統

1,系統需求 通訊錄是一個記錄親人,好友信息的工具 系統中需要實現的功能如下: 1,添加聯系人:向通訊錄中添加新人,信息包括(姓名,性別,年齡,聯系電話&#…

構建高效的接口自動化測試框架思路

在選擇接口測試自動化框架時,需要根據團隊的技術棧和項目需求來綜合考慮。對于測試團隊來說,使用Python相關的測試框架更為便捷。無論選擇哪種框架,重要的是確保 框架功能完備,易于維護和擴展,提高測試效率和準確性。今…

IntelliJ IDEA 的常用快捷鍵

IntelliJ IDEA 的常用快捷鍵非常多,這些快捷鍵可以幫助你更高效地編寫代碼。以下是一些常用的快捷鍵總結: 基礎操作 CtrlN:查找類CtrlShiftN:查找文件CtrlAltL:格式化代碼AltInsert:生成代碼(…

信息安全技術第1章——信息網絡安全基本概念

課程介紹 網絡信息安全是醫學信息工程專業的限選課。主要圍繞計算機網絡安全所涉及的主要問題進行講解,內容包括:對稱密碼與公鑰密碼的基本原理、相關算法及應用。電子郵件的安全,IP安全,Web安全,惡意軟件及防火墻等內…

UI自動化-(web端窗口截圖文件上傳-實操入門)

1、窗口截圖 1. UI自動化中,為什么需要進行窗口截圖? 調試和故障排除:截圖可以直觀地查看界面的狀態,快速識別和解決問題。當自動化過程中出現錯誤或異常時,通過查看截圖可以確定是否是界面元素的問題,例…