Requests库
一. 优点
简单易用
url自动转义
py2和py3一致
二. 使用方法
User-Agent
包含电脑信息和浏览器信息,为了反爬,采用多个User-Agent的方式。网上可查询到
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
IP
登录网页ip,为了反爬,采用多个ip的方式。网上有免费和收费两种
free_proxy = {'http': '45.136.245.22:8080'}
response = requests.get(url=url,proxies=free_proxy)
Cookie
1)手动
cookies = '_ga=GA1.2.1820447474.1535025127; MEIQIA_EXTRA_TRACK_ID=199Tty9OyANCXtHaSobJs67FU7J;
cook_dict = {cookie.split('=')[0]:cookie.split('=')[1] for cookie in cookies.split('; ')}
response = requests.get(url=url,cookies=cook_dict)
2)自动登录信息获取并登录
url = 'https://www.yaozh.com/member/'
# 1.代码登录
session = requests.session() # session 类 可以自动保存cookies
# 登录界面checkN->preservelog->login->find: 1)login_url 2)post->form_data;get->query
login_url = 'https://www.yaozh.com/login'
login_form_data = {
'username':'xiaomaoera12',
'pwd': 'lina081012',
'formhash': '54AC1EE419',
'backurl': 'https://www.yaozh.com/',
}
login_response = session.post(login_url,data=login_form_data,headers=headers)
# 2.登录成功之后 带着 有效的cookies 访问 请求目标数据
data = session.get(member_url,headers=headers).content.decode()
SSL取消认证
因为https 是有第三方CA 证书认证的,但是有的网站虽然是https 但是 它不是CA证书, 而是他自己颁布的证书(例如12306)。解决方法 是: 告诉web 忽略证书访问
response = requests.get(url=url, headers=headers, proxies=free_proxy ,verify=False)
返回数据提取Text&Content
1) text(更常用)
返回的是Unicode型的数据。
content = r.text #先读取
html = etree.HTML(content) #再解码
2) content(可能有不能解析的)
返回的是bytes数据。
两种形式utf-8和gbk:
*** utf-8->decode(“utf-8”)(linux&mac默认)->file.write(data,encoding=“utf-8”)
*** gbk->decode(“gbk”)(win默认)->file.write(data,encoding=“gbk”)