九. 網絡編程(經過requests模塊深刻了解socket案例)

一. requests 模塊初級使用爬取 案例(線程)cookie

1. uuid的模塊使用socket

UUID是由一組32位數的16進制數字所構成,是故UUID理論上的總數爲1632=2128,約等於3.4 x 1038。也就是說若每納秒產生1兆個UUID,要花100億年纔會將全部UUID用完。

UUID的標準型式包含32個16進制數字,以連字號分爲五段,形式爲8-4-4-4-12的32個字符。示例:

    550e8400-e29b-41d4-a716-446655440000

UUID亦可刻意重複以表示同類。例如說微軟的COM中,全部組件皆必須實現出IUnknown接口,方法是產生一個表明IUnknown的UUID
。不管是程序試圖訪問組件中的IUnknown接口,或是實現IUnknown接口的組件,只要IUnknown一被使用,皆會被參考至同一個ID:
00000000-0000-0000-C000-000000000046。
import uuid

aa=str(uuid.uuid4())
print(aa)
print(type(aa))
# b4e074c4-32a6-42a2-a5d1-7e074b075fc4
# <class 'str'>

2. Requests模塊說明

Requests 是使用 Apache2 Licensed 許可證的 HTTP 庫。用 Python 編寫,真正的爲人類着想。

Python 標準庫中的 urllib2 模塊提供了你所須要的大多數 HTTP 功能,可是它的 API 太渣了。它是爲另外一個時代、
另外一個互聯網所建立的。它須要巨量的工做,甚至包括各類方法覆蓋,來完成最簡單的任務。 在Python的世界裏,事情不該該這麼麻煩。 Requests 使用的是 urllib3,所以繼承了它的全部特性。Requests 支持 HTTP 鏈接保持和鏈接池,支持使用 cookie
保持會話,支持文件上傳,支持自動肯定響應內容的編碼,支持國際化的 URL 和 POST 數據自動編碼。現代、國際化、人性化。 (以上轉自Requests官方文檔)
# # 爬取圖片 (就是下載圖片到本地)
import uuid
import requests  # requests是使用Apache2 licensed 許可證的HTTP庫。  這個模塊裏面封裝了socket 裏面全部方法 方法一 效率極其低
ret_li
= ["https://www2.autoimg.cn/youchuang/g26/M07/AD/13/autohomecar__ChcCP10QOdWAUAlRAApDJLmcF98280.jpg", "https://qnwww2.autoimg.cn/youchuang/g26/M05/A9/7F/autohomecar__ChsEe10QOeaAK0GhAAUwvnKQrtI797.jpg", "https://www2.autoimg.cn/youchuang/g2/M0A/AA/74/autohomecar__ChsEkF0QOhmAcixZAAg7i966t0Q279.jpg", ] for ret in ret_li: res = requests.get(ret) """ requests.get(ret) 裏面幹了那些事情 1. DNS 解析域名 根據域名解析ip 2.建立socket 客服端 相似 sk=socket.socket() 3. 向服務端發起鏈接請求 相似 sk.connent() 4.發送數據(發送圖片) sk.send(......) 5. 接收數據 sk.recv(1024) """ filename = str(uuid.uuid4()) + ".jpg" with open(filename, "wb") as f1: f1.write(res.content) print("*******************************************************88")
方法二 經過線程來實現 效率高
import threading ret_li = ["https://www2.autoimg.cn/youchuang/g26/M07/AD/13/autohomecar__ChcCP10QOdWAUAlRAApDJLmcF98280.jpg", "https://qnwww2.autoimg.cn/youchuang/g26/M05/A9/7F/autohomecar__ChsEe10QOeaAK0GhAAUwvnKQrtI797.jpg", "https://www2.autoimg.cn/youchuang/g2/M0A/AA/74/autohomecar__ChsEkF0QOhmAcixZAAg7i966t0Q279.jpg", ] def fun(url): res=requests.get(url) """ requests.get(ret) 裏面幹了那些事情 1. DNS 解析域名 根據域名解析ip 2.建立socket 客服端 相似 sk=socket.socket() 3. 向服務端發起鏈接請求 相似 sk.connent() 4.發送數據(發送圖片) sk.send(......) 5. 接收數據 sk.recv(1024) """ filename = str(uuid.uuid4()) + ".jpg" with open(filename, "wb") as f1: f1.write(res.content) for url in ret_li: aa =threading.Thread(target=fun,args=(url,)) aa.start()
相關文章
相關標籤/搜索