在檔案儲存及資料型別中的一些小問題
結語python 3.6
使用原生自帶的 urllib 模組進行爬蟲的開始
//匯入模組urllib的request框架
import urllib.request
使用urlopen方法模擬使用者開啟網頁,以www.baidu.com為例。
import urllib.request
defload_data()
: url =
("")//http和https有不同的訪問方式
response = urllib.request.urlopen(url)
load_data(
)
如下圖,可以看到返回了乙個response物件
使用 read 方法讀取返回的response物件
import urllib.request
defload_data()
: url =
""response = urllib.request.urlopen(url)
print
(response)
data = response.read(
)//此處的response是我自己取的引數名
)實際上是urllib.request.urlopen(url)
.read(
)print
(data)
loda_data(
)
如下圖可以看到在返回乙個response之後成功讀取了response的資料,但是可以注意到在response資料的前面有b』這意味這讀取到的資料是bytes型別,也就是二進位制資料流。
使用decode方法將二進位制資料轉碼成utf-8格式
import urllib.request
defload_data()
: url =
""response = urllib.request.urlopen(url)
print
(responce)
data = response.read(
)print
(data)
str_data = data.decode(
"utf-8"
)print
(str_data)
load_data(
)
可以看到三次的結果對比,最終獲取到了想要的資料。
使用with open進行資料讀寫,儲存獲取的資料。
)可以看到獲取的資料依照給定的檔名baidu.html儲存了下來。
使用「w」時,寫入的是字串型別資料,在上文中data是bytes型資料,str_data是字串型資料。
//如果上文的輸出這樣寫就會報錯
如圖:
-------------------------分隔------------------------
//那麼這就意味著如果使用"wb"會得到正確結果
如下圖
(wb_baidu.html與上一種方式得到的baidu.html是一樣的檔案,這裡就不貼檔案比較的結果圖了)
在上一問題中可以發現「w」與「wb」在使用過程當**現了encoding=「utf-8」的差異,那麼對應會有什麼樣的問題?
//上文中data是bytes型別
如圖報錯:valueerror:二進位制模式不接受編碼引數
----------分隔----------
//上文中str_data是str型別
如圖報錯:unicodeencodeerror: 『gbk』編解碼器無法在位置29531:非法多位元組序列中編碼字元』\xbb』
本節完畢,下文待續。
爬蟲學習記錄
如何將字串轉換為字典 字典推導式 cookies anonymid j3jxk555 nrn0wh r01 1 ga ga1.2.1274811859.1497951251 de bf09ee3a28ded52e6b65f6a4705d973f1383380866d39ff5 ln uact mr ...
爬蟲學習筆記01
固定部分 import requests base url headers params response requests.get base url,headers headers,params params 第一種 讀取後顯示為亂碼 通過檢視網頁原始碼查詢到網頁編碼格式為gbk 修改編碼格式後,...
Python爬蟲學習01
由於自身對python有比較大的興趣,但是畢竟 有業務需求才能推動學習 在休息的時候看了幾天的基礎,對python的基礎還是可以掌握的,但是一些api的方法確實沒有多大興趣,畢竟乙個乙個api的學習python這種方法,於我而言,確實想睡覺,所以我想以乙個點帶面的學習python,爬蟲是python...