**
爬虫第三天 身份认证
**
- ssl验证
- 代理设置
- 超时设置
- 身份认证
1)基本身份认证
2)摘要式身份认证 - 总结
一、ssl验证
import requests
response=requests.get('https://www.12306.cn/index/')
print(response.status_code)
模仿
设置忽略警告的方式屏蔽警告
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response=requests.get('http://www.baidu.com',verify=False)
print(response.status_code)
捕获警告到日志的方式忽略警告
import logging
import requests
logging.captureWarnings(True)
response=requests.get('https://baidu.com',verify=False)
print(response.status_code)
二、代理设置
设置代理解决问题:对大规模且频繁的请求网站可能会弹出验证码,或者跳转到登录认证界面,更甚者可能会直接封禁客户端的ip,导致一定时间内无法访问。
代理无效
网上找了一个免费爬代理IP的
【Python脚本】-Python查找可用代理IP
出现错误
解决:
python异常错误:SyntaxError: Missing parentheses in call to ‘print’
然后出现了抛出异常
解决:
Python异常处理 -跳过异常继续执行(参考异常的语法)
出现了新的问题
注释掉这句话后成功运行,可惜就是没有IP
安装socks协议,requests支持socks协议的代理
无语了,手打也能出现错误
Python对代码这方面的排版真的很严格。
三、超时设置
永久等待——不加参数,或者把timeout的参数设置为none
四、身份认证
1)基本身份认证
requests自带身份认证,但还是可能会报ssl错误
解决:加上ssl验证
import requests
from requests.auth import HTTPBasicAuth
r=requests.get('http://static3.scrape.cuiqingcai.com',auth=HTTPBasicAuth('admin','admin'),verify=False)
print(r.status_code)
代码可以简写
import requests
from requests.auth import HTTPBasicAuth
r=requests.get('http://static3.scrape.cuiqingcai.com',auth=('admin','admin'),verify=False)
print(r.status_code)
2)摘要式身份认证——Digest Authentication
五、总结
多学习Python基础,在排版这方面真的太严格了