Python學習日誌(四)

2021-09-12 12:58:55 字數 1958 閱讀 9007

今天學習的是python的爬蟲基礎。

其中知識點如下:

使用時需要匯入包urllib.request,在python2中使用urllib需要用import urllib,urllib2;

開始鏈結訪問

html = urllib.request.urlopen(url);

讀取**原始碼

data = html.read();

將原始碼儲存到本地檔案中,由於data資料為bytes所以寫入方式為:wb

file = open(「***x.html」,「wb」,1);

讀寫許可權說明:

r 開啟唯讀檔案,該檔案必須存在。

r+ 開啟可讀寫的檔案,該檔案必須存在。

rb+ 讀寫開啟乙個二進位制檔案,只允許讀寫資料。

rt+ 讀寫開啟乙個文字檔案,允許讀和寫。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。(原來的eof符不保留)

wb 只寫開啟或新建乙個二進位制檔案;只允許寫資料。

wb+ 讀寫開啟或建立乙個二進位制檔案,允許讀和寫。

wt+ 讀寫開啟或著建立乙個文字檔案;允許讀寫。

at+ 讀寫開啟乙個文字檔案,允許讀或在文字末追加資料。

ab+ 讀寫開啟乙個二進位制檔案,允許讀或在檔案末追加資料。

url常規用法:

獲取訪問**的**

print(「當前訪問**:%s」%html.geturl());

獲取**網路狀態的返回碼:200的返回碼為正常範圍,伺服器癱瘓訪問404

print(「訪問網路的狀態:%s」%html.getcode());

**中文亂碼,在複製**時可能會生成亂碼,例如:

url_01 = 「武漢工程大學�&tid=2125163782&pic_id=f8c5a0cc7cd98d106764055d213fb80e7aec90c6」;

亂碼的產生:

html_01 = urllib.request.quote(url_01);

print(「產生的網路位址為:%s」%html_01);

如何修正亂碼?(解碼)

html_02 = urllib.request.unquote(html_01);

print(「解碼後的網路位址為:%s」%html_02);

開始解析**中的

#建立函式

def get_data_img(data):

建立乙個正規表示式進行資料篩選(可使用網路工具迅速篩選)

# 網路不好—匹配小圖

建立乙個正規表示式的模板

pat = re.compile(r);

進行資料匹配

第乙個引數需要正規表示式模板,第二個為字串型別的資料

imgurls = re.findall(pat,str(data));

返回資料為陣列格式

print(imgurls);

注意加上轉義字元/

pathurl = 「c:/users/administrator/desktop/10001」

if not os.path.exists(pathurl):

os.makedirs(pathurl)

print(「成功建立」)

pass

else:

print(「該檔案已經存在」)

pass

Python學習日誌(四)

所有的 python 對像都擁有三個特性 身份,型別和值。身份 每乙個物件都有乙個唯一的身份標識自己,任何物件的身份可以使用內建函式 id 來得到。這個值可以被認為是該物件的記憶體位址。您極少會用到這個值,也不用太關心它究竟是什麼。型別 物件的型別決定了該物件可以儲存什麼型別的值,可以進行什麼樣的操...

Python學習日誌(四)

列表名 元素1,元素2,列表和c中的陣列有些相似,但列表的功能更加強大,陣列的元素要求是同種型別,但列表可以是混合型別。跟陣列一樣,通過元素的索引值,我們可以從列表獲取單個資料。這裡介紹上面 用到的幾個函式 extend 拓展函式,需要注意的是,由於使用列表拓展列表,所以這個函式的引數是乙個列表。i...

shell 學習日誌(四)

dd命令會轉殖給定的輸入內容,然後將一模一樣的乙份副本寫入到輸出。stdin 裝置檔案 普通檔案等都可以作為輸入,stout 裝置檔案 普通檔案等也可以作為輸出。dd if dev zero of junk.data bs 1m count 1if input file of output file...