文件名.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函数