文件名.py, 行數,前端
出錯行內容python
出錯類型程序員
# # # 1/0 # x = 10 # y = input('數字:') #輸入字符串類型給y,y被計算機識別爲字符串類型 # y += 10 # print(y + 10) #異常處理 #語句格式 try: ... except Error: ... # try: # print(1/0) #判斷try至except之間的語句是否出錯,相似於 if ...: else: 雙分支結構 # except ZeroDivisionError: # pass # #如try至except之間的語句沒出錯則正常執行,若是出錯則判斷except後面的錯誤類型,若是符合該錯誤,則執行except冒號後的語句,若是不符合則報錯 # try: # dic = {'a': 1} # dic['b'] #判斷try至except之間的語句是否出錯,相似於 if ...: else: 雙分支結構 # except ZeroDivisionError: # pass #如try至except之間的語句沒出錯則正常執行,若是出錯則判斷except後面的錯誤類型,若是符合該錯誤,則執行except冒號後的語句,若是不符合則報錯 # try: # 1/0 # dic = {'a': 1} # dic['b'] #判斷try至except之間的語句是否出錯,相似於 if ...: else: 雙分支結構 # except ZeroDivisionError: # print('捕捉到了ZeroDivisionError這個錯誤') # except KeyError: # print('捕捉到了KeyError這個錯誤') #如try至except之間的語句沒出錯則正常執行,若是出錯則判斷except後面的錯誤類型,若是符合該錯誤,則執行except冒號後的語句,若是不符合則報錯 #輸入函數input的用法 # key = input('輸入一個key獲取字典中的值') # try: # dic = {'a':1} # dic[key] # except KeyError: # print('捕捉到了KeyError這個錯誤') #對於可能多個錯誤的語法結構 # try: # key = input('輸入一個key獲取字典中的值') # dic = {'a': 1} # dic[key] # 1/0 # lt=[1, 2, 3] # lt['a'] # except Exception as e: #把錯誤信息賦值給變量e,同時通常把該錯誤記錄到日誌中 # logging.info(e) #將e記錄到日誌中,給程序員看 # print(e) # print('你輸入有問題') #給用戶看 #機制:預運行(把代碼抽離到相似另一個文件中運行,這樣的運行對本文件不會形成任何影響),可是這個過程須要消耗時間,通常能不用則不用
用異常處理提高代碼的rubst,擼棒性-->經驗搭出來的json
score = 95 if score > 90: print('優秀')
score = 95 if score > 90: print('優秀') else: print('良好') #三元表達式 print('優秀') if score > 90 else print('良好') #單分支沒有,多分鐘也沒有,只有雙分支有 #結果一 條件 結果二
if ...: elif ...: elif ...: else:瀏覽器
if ...: if ...: if ...: if服務器
s = 91 if s > 90: print('優秀') elif s > 60: print('良好') else: print('不及格') if s > 90: print('優秀') if s > 60 and s < 90: print('良好') if s < 60: print('不及格')
if ...: elif ...: 結構對一個總體順次判斷,後面一步必需要等前面一步結束網絡
if ...: if ...: 結構每次都對同一總體判斷,每次判斷互相獨立異步
例如: s = 91 時if ...: elif ...: 走一次代碼就終止; 而if ...: if ...: 須要走三次;此時if ...: if ...: 結構時間複雜度和空間複雜度都更大.函數
>= not 非
for循環工具
debug調試-->點出紅點-->右鍵debug-->右鍵向下箭頭調試每次循環運行的具體數據
1.發送請求
2.獲取數據
3.解析數據
4.保存數據
response = requests.get(url='目標網站地址')
response.content #二進制流
response.rext #文本
data_list = re.findall('正則匹配規則','解析的數據','匹配模式')
貪婪匹配:
.*? #過來任何內容
非貪婪匹配 :
(.*?) #提取內容
爬取圖片
爬取視頻
找到視頻或圖片連接
res = requests.get(連接地址)
爬取豆瓣電影信息
---url:
解析提取:
電影名稱\電影詳情頁\電影評分\評價人數
1.發送請求
2.解析數據
3.保存數據
1.分析網站的通訊流程
2.分析查找數據從何而來
3.目標網站的反爬策略
4.根據目標網站的反爬策略編寫攻擊手段,獲取數據.
根據每頁電影url地址規律使用for循環爬取所有top250信息
for i in range(10): u = f'https://movie.douban.com/top250?start={num}&filter=' num += 25
後面代碼總體縮進便可總體放入for循環中
1.發送請求
2.獲取數據
3.解析數據
4.保存數據
response = requests.get(url='目標網站地址')
response.content #二進制流
response.rext #文本
data_list = re.findall('正則匹配規則','解析的數據','匹配模式')
貪婪匹配:
.*? #過來任何內容
非貪婪匹配 :
(.*?) #提取內容
爬取圖片
爬取視頻
找到視頻或圖片連接
res = requests.get(連接地址)
爬取豆瓣電影信息
---url:
解析提取:
電影名稱\電影詳情頁\電影評分\評價人數
1.發送請求
2.解析數據
3.保存數據
1.分析網站的通訊流程
2.分析查找數據從何而來
3.目標網站的反爬策略
4.根據目標網站的反爬策略編寫攻擊手段,獲取數據.
同步就是你叫我去吃飯,我聽到了就和你去吃飯;若是沒有聽到,你就不停的叫,直到我告訴你聽到了,才一塊兒去吃飯。
異步就是你叫我,而後本身去吃飯,我獲得消息後可能當即走,也可能等到下班纔去吃飯
同步請求在等待響應時不能繼續使用瀏覽器、而異步請求,不用等待響應,可繼續使用瀏覽器。對客戶沒用影響。
F12-->Network(網絡監聽工具)-->刷新頁面(默認獲取的是同步+異步數據)-->點XHR(只獲取異步請求)
一塊塊小數據(不包含前端代碼),該數據爲字典類型,想批量獲取,分析規律
第三方數據格式
json.dumps() #把python數據格式轉成json數據格式
json.loads() #把json數據格式換成python數據格式
用戶代理憑證
以字典形式取出並賦值給request.get函數