- 實戰Python網絡爬蟲
- 黃永祥
- 605字
- 2019-11-22 18:44:43
6.4 下載與上傳
下載文件主要從服務器獲取文件內容,然后將內容保存到本地。下載文件的方法如下:

代碼變量url是一個圖片文件URL地址,對文件所在URL地址發送請求(大多數是GET請求方式);服務器將文件內容作為響應內容,然后將得到的內容以字節流(Bytes)格式寫入自定義文件,這樣就能實現文件下載。
除了文件下載外,還有更為復雜的文件上傳,文件上傳是將本地文件以字節流的方式上傳到服務器,再由服務器接收上傳內容,并做出相應的響應。文件上傳存在一定的難度,其難點在于服務器接收規則不同,不同的網站接收的數據格式和數據內容會不一致。下面以發送圖片微博為例進行介紹。
(1)在瀏覽器中輸入https://weibo.cn/,在網頁上單擊“高級”按鈕并使用Fiddler抓包工具(由于發送微博時,網頁發生302跳轉,因此使用Chrome會清空請求信息,導致抓取難度較大)。
(2)單擊“選擇文件”,選擇圖片文件并輸入發布內容“Python爬蟲”,最后單擊“發布”按鈕發布微博。查看Fiddler抓取的請求信息,如圖6-2所示。

圖6-2 Fiddler抓取的請求信息
從圖6-2得知,該請求方式是POST, QueryString是POST的請求參數data, Content-type是上傳文件,三個Content-Disposition分別對應發布內容、發布圖片和設置分組可見。代碼實現如下:

POST數據對象是以文件為主的,上傳文件時使用files參數作為請求參數。Requests對提交的數據和文件所使用的請求參數做了明確的規定。
參數files也是以字典形式傳遞的,每個Content-Disposition為字典的鍵值對,Content-Disposition的name為字典的鍵,value為字典的值。
此外,不同的網站設置對files參數的設置也是不一樣的,下面列出較為常見的上傳方法:

- HTML5+CSS3+JavaScript從入門到精通:上冊(微課精編版·第2版)
- .NET之美:.NET關鍵技術深入解析
- Objective-C Memory Management Essentials
- Monkey Game Development:Beginner's Guide
- 認識編程:以Python語言講透編程的本質
- Troubleshooting PostgreSQL
- Mastering Python Networking
- Python數據分析從0到1
- 利用Python進行數據分析(原書第3版)
- Java Web開發詳解
- PHP從入門到精通(第4版)(軟件開發視頻大講堂)
- Scratch趣味編程:陪孩子像搭積木一樣學編程
- Python機器學習算法與應用
- JBoss:Developer's Guide
- C++程序設計教程(第2版)