1.请求分析
"""requests库的应用。requests是比python内置urllib库更好的http请求库""" import requests dels import Responseres = ("/") # 此处可以换成post,delete,patch等请求 print(type(res)) # <class dels.Response'> Response类 print(res.status_code) # 请求返回的状态码 200表示成功 print()) # str类型 ) # 返回文本属性 kies) # cookies信息<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu/>]> req = ("") # 可直接添加字典形式的参数请求params=dict() # req = ("", params=data) print(req.headers) # 获取返回的请求头信息 """ {"args": {# 此处会显示请求的url中参数信息}, "headers": { # 请求头信息"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", # 连接关闭"Host": "httpbin", "User-Agent": "python-requests/2.20.1" # 不设置headers,则显示本身请求信息}, "origin": "223.73.146.13", "url": "" }"""# 直接获取返回的字典形式解析结果 rew = ("") print()) # str类型 print(rew.json()) # 调用响应类Response的方法json()转换json字符串为字典 print(type(rew.json())) # <class 'dict'>View Code
"""requests的POST请求和文件上传""" import requestsdata = {"name": "Jim", "age": "26"} res = requests.post("", data=data) )""" {"args": {}, "data": "", "files": {}, "form": { # post请求的内容"age": "26", "name": "Jim"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Content-Length": "15", "Content-Type": "application/x-www-form-urlencoded", # 请求数据类型"Host": "httpbin", "User-Agent": "python-requests/2.20.1"}, "json": null, "origin": "223.73.146.12", "url": "" } """files = {"file": open("favicon.ico", "rb")} ren = requests.post("", files=files) )""" {"args": {}, "data": "", "files": { # 文件上传内容会有单独的files字段来标明"file": "data:application/octet-stream;base64"}, "form": {}, # 空form"headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Content-Length": "6665", # 文件上传类型"Content-Type": "multipart/form-data; boundary=717f83c70b6a0c14c53c66a11897cc72", "Host": "httpbin", "User-Agent": "python-requests/2.20.1"}, "json": null, "origin": "223.73.146.12", "url": "" } """View Code
"""获取多媒体二进制数据""" import requests# 获取多媒体二进制数据,比如图标 tag = (".ico") ) # 因为是二进制数据,不能直接文本显示。乱码 t) # 字符串以b开头的二进制数据 # with open文件操作语句,在打开文件执行操作完成之后自动完成文件关闭。里面必须包含__enter__和__exit__方法 with open("favicon.ico", "wb") as f:# f是获取的文件句柄对象,调用文件句柄的方法完成读写操作。在这里是把图标存入当前目录下f.t)View Code
"""requests中cookies的应用""" import requestsheaders={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3554.0 Safari/537.36"} res = ("", headers=headers) kies) # 调用items()方法转化为元祖组成的列表,遍历输出每一个cookie for key, value kies.items():print(key + "=" + value)""" # 类型RequestsCookieJar <RequestsCookieJar[<Cookie BAIDUID=CE10743D4DCCA7E8EAE505F60EBD3992:FG=1 for .baidu/>, <Cookie BIDUPSID=CE10743D4DCCA7E8EAE505F60EBD3992 for .baidu/>, <Cookie H_PS_PSSID=26523_1450_21091_28206_28132_27750_28140_27508 for .baidu/>, <Cookie PSTM=1546168944 for .baidu/>, <Cookie delPer=0 for .baidu/>, <Cookie BDSVRTM=0 for www.baidu/>, <Cookie BD_HOME=0 for www.baidu/>]> BAIDUID=CE10743D4DCCA7E8EAE505F60EBD3992:FG=1 BIDUPSID=CE10743D4DCCA7E8EAE505F60EBD3992 H_PS_PSSID=26523_1450_21091_28206_28132_27750_28140_27508 PSTM=1546168944 delPer=0 BDSVRTM=0 BD_HOME=0 """"""requests库利用cookies请求知乎的两种方式""" import requests kies import RequestsCookieJar""" # 常用 headers = {"cookie": 'q_c1=c5dafb4029a94bd28bab31916755a82a|1546093256000|1546093256000; r_cap_id="NzJjY2ViMWQ2MWQ2NGNmYmE5ZjJjYjA4MmI4OTlmYjM=|1546093256|4fdca7ef25aee38df8b6895fe0e6870b6c4157d7"; cap_id="NTIxY2Q0NWY2NGYzNDMwYjhmZWJiNzkxY2YxNzMxNTE=|1546093256|98ea49da057eacfa5979f20ebc86610106421e92"; l_cap_id="M2JlYTFhZmQzOWRjNDE1NzhmM2VjYjA2YWFmNGViNzI=|1546093256|321a5802717da27fc618ba74eb0dcb928d037974"; d_c0="AODhnmWpvg6PTmDEXzC_5yO9xS5KsJL3g1c=|1546093259"; _xsrf=T3PdhoFZCjirABeT1olJ9o2Ju1WH5PQP; _zap=492572c4-fbf2-48d2-9ac9-ec7ee95a9154; tgw_l7_route=931b604f0432b1e60014973b6cd4c7bc; capsion_ticket="2|1:0|10:1546169369|14:capsion_ticket|44:MWJhZDk3YTYxYTA5NDkxZjhlYWUwODRlNDliY2Y4Mjc=|a303a846033bf574b0bdd3677218f5bb49a56b00890aa86a7a9b0ac7c6b53985"; z_c0="2|1:0|10:1546169409|4:z_c0|92:Mi4xVEljZkJBQUFBQUFBNE9HZVphbS1EaVlBQUFCZ0FsVk5RZm9WWFFCdTAxTV94cHpiQ0xUV2dBRC16RmpacE4xZXp3|e24885ab0706d33abc6e7f45f2eb74769d88bc15366d945d57366efe8f5856a0"; unlock_ticket="AJBCprKETQsmAAAAYAJVTUmzKFwvSS6hhmi4BuDGUgm1G6fZBYhVXw=="; tst=r',"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3554.0 Safari/537.36" } res = ("", headers=headers) ) """# 比较繁琐 cookies = 'q_c1=c5dafb4029a94bd28bab31916755a82a|1546093256000|1546093256000; r_cap_id="NzJjY2ViMWQ2MWQ2NGNmYmE5ZjJjYjA4MmI4OTlmYjM=|1546093256|4fdca7ef25aee38df8b6895fe0e6870b6c4157d7"; cap_id="NTIxY2Q0NWY2NGYzNDMwYjhmZWJiNzkxY2YxNzMxNTE=|1546093256|98ea49da057eacfa5979f20ebc86610106421e92"; l_cap_id="M2JlYTFhZmQzOWRjNDE1NzhmM2VjYjA2YWFmNGViNzI=|1546093256|321a5802717da27fc618ba74eb0dcb928d037974"; d_c0="AODhnmWpvg6PTmDEXzC_5yO9xS5KsJL3g1c=|1546093259"; _xsrf=T3PdhoFZCjirABeT1olJ9o2Ju1WH5PQP; _zap=492572c4-fbf2-48d2-9ac9-ec7ee95a9154; tgw_l7_route=931b604f0432b1e60014973b6cd4c7bc; capsion_ticket="2|1:0|10:1546169369|14:capsion_ticket|44:MWJhZDk3YTYxYTA5NDkxZjhlYWUwODRlNDliY2Y4Mjc=|a303a846033bf574b0bdd3677218f5bb49a56b00890aa86a7a9b0ac7c6b53985"; z_c0="2|1:0|10:1546169409|4:z_c0|92:Mi4xVEljZkJBQUFBQUFBNE9HZVphbS1EaVlBQUFCZ0FsVk5RZm9WWFFCdTAxTV94cHpiQ0xUV2dBRC16RmpacE4xZXp3|e24885ab0706d33abc6e7f45f2eb74769d88bc15366d945d57366efe8f5856a0"; unlock_ticket="AJBCprKETQsmAAAAYAJVTUmzKFwvSS6hhmi4BuDGUgm1G6fZBYhVXw=="; tst=r' jar = kies.RequestsCookieJar() # 生成请求的cookies实例jar headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3554.0 Safari/537.36" } for cookie in cookies.split(";"):print(type(cookie)) # 类型strkey, value = cookie.split("=", 1) # 变量循环接收值,需指定每一次接收的数量,在这里是1个jar.set(key, value) # 在jar实例中设置cookies # 携带cookies和headers发起请求 res = ("", cookies=jar, headers=headers) )View Code
"""requests配合re正则实战解析""" import requests import reheaders={"user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3554.0 Safari/537.36"} url = "" # 获取响应的数据 res = (url=url, headers=headers) # 正则字符串编译成正则表达式对象,.*?是非贪婪模式匹配,匹配的字符串越短越好,re.S使.匹配换行符在内的所有字符 content_tag = repile("explore-feed.*?question_link.*?>(.*?)</a>", re.S) # 获取匹配的字符串信息 title = re.findall(content_tag, ) print(title)View Code
"""requests的代理设置proxies和socks。同理可以添加超时设置timeout, 因为请求分为连接和读取,也可以接收一个元祖传参数。此外还可以做登陆认证, 直接使用auth认证。 """ import requests# 基本的Http代理 proxies = {"http": "user:password@192.168.1.102:3780" } res = ("", proxies=proxies, timeout=1, auth=("username", "password")) )# socks协议的代理 proxies1 = {"https": "socks5://user:password@host:port" } ren = ("", proxies=proxies1, timeout=(1, 2, 3)) )View Code
"""requests当中的session会话维持""" import requests# 生成会话对象 ses = requests.Session() # 用会话对象请求url并设置cookies ("") # 再次使用会话对象获取已设置的cookies信息 res = ("") )View Code
"""requests中SSL证书验证专门用于保护Web通讯的.TLS用于两个应用程序之间提供保密性和数据完整性""" import requests import urllib3 import logginglogging.captureWarnings(True) # 捕获警告日志的方式忽略警告 urllib3.disable_warnings() # 在这里直接忽略警告 res = ("", verify=False) # 不要证书验证,会显示需要证书的警告 print(res.status_code)""" # 返回证书验证的警告信息 InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: .html#ssl-warnings InsecureRequestWarning 200 """# 指定一个本地证书用作客户端证书,这可以是单个文件(包含密钥和证书)或一个包含两个文件路径的元组.私有证书的key必须是解密的 ren = ("", cert=("/", "/path/key")) print(res.status_code)View Code
转载于:.html
本文发布于:2024-01-31 21:11:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170670666331378.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |