#呼叫parse和requestfrom urllib import request,parse
#呼叫了兩種錯誤形式
#建立函式,路由,headers=none,headers預設為空
def get(url,headers=none):
#返回值呼叫下面的urlrequests函式
return urlrequests(url,headers=headers)
def post(url,form,headers=none):
# 返回值呼叫下面的urlrequests函式
return urlrequests(url,form,headers=headers)
#設定urlrequests函式,路由,form設定預設為空,headers預設為空
def urlrequests(url,form=none,headers=none):
#偽裝為瀏覽器訪問
#判斷,如果headers為空那麼執行此行**傳入user_agent,如果使用者自行傳入便覆蓋
if headers==none:
headers =
#建立byte型別儲存變數
html_bytes=b""
#用try檢測是否錯誤,如果不錯誤,那麼執行此**
try:
#判斷form是否為true,如果為rtue那麼執行此**
if form:
#由字典轉換為byte型別步驟,1.轉換為字串型別2.轉換為byte型別
#post型別
#將form字典轉換為str型別
form_str = parse.urlencode(form)
#將form_str 字串轉換成byte型別
form_bytes = form_str.encode('utf-8')
req = request.request(url,data=form_bytes,headers=headers)
#如果form不為true那麼執行此**
else:
#建立乙個request類來構建乙個請求
req = request.request(url,headers=headers)
# urlopen()方法可以實現最基本請求的發起
response = request.urlopen(req)
#讀取並把讀取到的內容給乙個新的變數
html_bytes = response.read()
#判斷是否有httprrror錯誤如果有執行此**
#輸出錯誤
print(e)
#判斷是否有urlerror錯誤如果有執行此**
except urlerror as e:
# 輸出錯誤
print(e)
#返回 html_bytes,此時此變數的型別為byte型別
return html_bytes
if __name__=='__main__':
#輸入路由
# url = ''
#輸入要查的字典內容
# form =
#post是自定義的函式,傳送值到post函式
# html_bytes = post(url, form=form)
# print(html_bytes)
url = ''
#get是自定義的函式,傳送值到get函式裡
html_byte=get(url)
print(html_byte)
#相關筆記
#data引數如果要傳必須傳bytes(位元組流)型別的,如果是乙個字典,先用urllib.parse.urlencode()編碼。
封裝函式爬蟲
分析貼吧的url規律。第1頁 pn 0 第2頁 pn 50 第3頁 pn 100 pn是控制頁碼的。著重關注 封裝的思路。from urllib import request,parse import osimport ssl 解決ssl證書問題 處理url,返回request def handle...
C 封裝多個執行緒
今天專案需要同時通過tcp讀取六個外接裝置傳送的資料,如果把執行緒重複寫六次,就感覺 太多重複內容了,就想能不能將執行緒變成類似類的樣子,然後生成六個 執行緒類 的物件,然後將物件加入list中 如下 示例 我前面已經建立了乙個public static dictionarysockets 裡面存放...
Scrapy 執行多個爬蟲
本文所使用的 scrapy 版本 scrapy 1.8.0 多個爬蟲 所有爬蟲 顯然,這兩種情況並不一定是等同的。假設當前專案下有 3 個爬蟲,分別名為 route dining experience,並在專案目錄下建立乙個main.py檔案,下面的示例 都寫在這個檔案中,專案執行時,在命令列下執行...