爬蟲學習記錄 01

2021-09-22 18:26:47 字數 3657 閱讀 7838

在檔案儲存及資料型別中的一些小問題

結語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...