标签:验证 war pen content span red highlight pip gen
一、 Request库
1、 GET请求
抓取页面(添加headers,修改headers,防止被网站拦截)
#抓取网页,知乎
import requests
import re
## 浏览器标识
headers = {‘user-agent‘: "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
r = requests.get(‘https://www.zhihu.com/explore‘, headers=headers)
pattern = re.compile(‘explore-feed.*?question_link.*?>(.*?)</a>‘, re.S)
titles = re.findall(pattern, r.text)
print(titles)
抓取二进制数据(图片、音频、视频…)
## 抓取二进制数据,获取github的图标,放在当前目录下
import requests
r = requests.get(‘https://github.com/favicon.ico‘)
with open(‘favicon.ico‘, ‘wb‘) as f:
f.write(r.content)
2、 POST请求(提交表单信息)
3、 响应(提交请求,返回响应)
4、 文件上传
# 文件上传
import requests
files = {‘file‘:open(‘favicon.ico‘,‘rb‘)}
r = requests.post(‘http://httpbin.org/post‘, files=files)
print(r.text)
5、 获取、设置Cookies【保存登录状态】
## 获取Cookies
import requests
r = requests.get(‘https://baidu.com‘)
print(r.cookies) ## RequestsCookieJar类型
#Cookie遍历解析:item()方法将cookies转换成元组,遍历每一个Cookie的名称和值
for key,value in r.cookies.items(): ##items()将cookies装华为元组组成的列表,遍历每一个cookie的名称和值
print(key + ‘=‘ + value)
## Cookies保持登录状态
## 直接在已经登录的网页上获取cookie,赋值给headers
import requests
headers = {
‘cookie‘:‘_zap=bf241714-d6f9-4e5f-9608-fa7b85f32db6; _xsrf=79ff86e9-5e76-4fa6-a384-4f528af88eb9; d_c0="AHBWI_Li4RCPTpXmzvEr1EkNgFDaBMtY-nA=|1582816893"; __guid=74140564.2608088362801457700.1582816893817.983; _ga=GA1.2.1547480939.1582816896; _gid=GA1.2.1931834251.1582816896; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1582816896; capsion_ticket="2|1:0|10:1582818182|14:capsion_ticket|44:MDhiMmFkNmY0YjI1NGRkYzgxMGZkY2Q3Mzk3YWYxZjU=|5bfdca13743bf8cb5de50f1c152f7d51120a4bf811eb2bfafdfc1079d69ffa9d"; z_c0="2|1:0|10:1582818209|4:z_c0|92:Mi4xSU00SERnQUFBQUFBY0ZZajh1TGhFQ2NBQUFDRUFsVk5vSEJfWGdDU2JjQkRxS3JNdElMNmZ3UjIzUVZ1WThyWWFn|61d7ba8d2dca14b10c7004277e43687cc4ef25116720ae3649d656dcc8cfef26"; monitor_count=3; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1582818210; KLBRSID=e42bab774ac0012482937540873c03cf|1582818280|1582816893‘,
‘user-agent‘:‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36‘
}
r = requests.get(‘https://www.zhihu.com/people/kuluma-59‘, headers=headers)
print(r.text)
6、 会话维持—Session对象
每次使用get()或者post()方法提交请求,相当于不同的会话,等于使用了两个浏览器打开不同页面。
使用Session对象可以维护一个会话,不用担心cookie问题
用于模拟登录
import requests
#第一次提交请求,设置cookie
requests.get(‘http://httpbin.org/cookies/set/number/123456789‘)
#第二次提交请求,没有设置cookie
r = requests.get(‘http://httpbin.org/cookies‘)
#获取最近一次请求的cookie
print(r.text) #"cookies": {}
import requests
## Session()对象会维持同一个会话
s = requests.Session()
s.get(‘http://httpbin.org/cookies/set/number/123456789‘)
r = s.get(‘http://httpbin.org/cookies‘)
print(r.text) # "cookies": {"number": "123456789"}
7、 SSL证书验证--vertify参数
如果在请求页面时出现 SSLError 表示证书验证出错,网站的证书没有被官方CA机构信任
需要修改 vertify参数为False,默认时True,这样就会请求成功
import requests import requests.packages import urllib3 urllib3.disable_warnings() ##运行程序时,忽略警告 r = requests.get(‘https://www.12306.cn‘, vertify=False) print(r.status_code)
8、 代理设置—proxies参数
大规模且频繁请求网站,可能会弹出验证码或跳转到登录页面,或者封禁IP
※HTTP代理
import requests
proxies = {
‘http‘:‘http://user:password@host:port‘
}
requests.get(‘https://www.taobao.com‘, proxies=proxies)
※SOCKS协议代理
先安装socks库: pip install ‘requests[socks]’
import requests
proxies = {
‘http‘:‘socks5://user:password@host:port‘,
‘https‘:‘socks5://user:password@host:port‘
}
requests.get(‘https://www.taobao.com‘, proxies=proxies)
9、 超时设置—timeout参数
超过设置时间还未响应就抛出异常
10、身份认证
import requests r = requests.get(‘http://localhost:5000‘, auth=(‘username‘,‘password‘)) print(r.status_code) ## 用户名密码正确返回200,否则401
11、Prepared Request
将请求表示为数据结构
标签:验证 war pen content span red highlight pip gen
原文地址:https://www.cnblogs.com/motoharu/p/12442867.html