美文网首页
requests进阶

requests进阶

作者: Donald_32e5 | 来源:发表于2019-05-07 17:57 被阅读0次
一、requests处理cookies
  • 1、cookie字符串放在headers中
  • 2、把cookie以字典传给cookies参数接受
  • 3、使用requests提供的session

I、cookies放在headers中

headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
"Cookie":" Pycharm-26c2d973=dbb9b300-2483-478f-9f5a-16ca4580177e; Hm_lvt_98b9d8c2fd6608d564bf2ac2ae642948=1512607763; Pycharm-26c2d974=f645329f-338e-486c-82c2-29e2a0205c74; _xsrf=2|d1a3d8ea|c5b07851cbce048bd5453846445de19d|1522379036"}

requests.get(url,headers=headers)

*注意:cookie有过期时间 ,所以直接复制浏览器中的cookie可能意味着下一程序继续运行的时候需要替换代码中的cookie,对应的我们也可以通过一个程序专门来获取cookie供其他程序使用;当然也有很多网站的cookie过期时间很长,这种情况下,直接复制cookie来使用更加简单

II、用字典的形式传入参数

cookies = {"cookie的name":"cookie的value"}
requests.get(url, headers=headers, cookies=cookie_dict}

III、使用session

session = requests.session()
response = session.get(url, headers)

*注:session实例在请求了一个网站后,对方服务器设置在本地的cookie会保存在session中,下一次再使用session请求对方服务器的时候,会带上前一次的cookie

二、requests其他处理方法

I、cookirJar的使用

import requests

a = requests.get('https://www.baidu.com/')
print(a.cookies)

dd = requests.utils.dict_from_cookiejar(a.cookies)
print(dd)

----------------
# <RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
# {'BDORZ': '27315'}

*注:把cookies转化为字典,前面的session是不需要对cookies做任何操作的

II、证书处理错误


在requests库中默认附带了一套它信任的根证书,如果他解析失败,直接关闭验证即可
requests.get(url,verify=False)

III、retrying模块的使用
在浏览器中浏览数据时,如果数据加载较慢,通常会刷新界面,retrying就是提供类似刷新的方法

import requests
from retrying import retry

headers = {}

#最大重试3次,3次全部报错,才会报错
@retry(stop_max_attempt_number=3) 
def _parse_url(url)
    #超时的时候回报错并重试
    response = requests.get(url, headers=headers, timeout=3) 
    #状态码不是200,也会报错并重试
    assert response.status_code == 200
    return response


def parse_url(url)
    try: #进行异常捕获
        response = _parse_url(url)
    except Exception as e:
        print(e)
        #报错返回None
        response = None
    return response
三、requests身份验证
  • 有时候网页会弹出一个登陆窗口,类似assert,他没有HTML表单。
  • auth可以提供验证
import requests
from requests.auth import HTTPBasicAuth

auth = HTTPBasicAuth('账号', '密码')

a = requests.get('目标网址', auth=auth).content.decode()
print(a)

相关文章

  • requests进阶

    一、requests处理cookies 1、cookie字符串放在headers中 2、把cookie以字典传给c...

  • 爬虫——进阶(一)requests

    一:requests概述 requests第三方封装的模块,通过简化请求和响应数据的处理,简化繁琐的开发步骤和处理...

  • 爬虫进阶《requests 模块学习》

    使用 Requests 发送网络请求非常简单。 一开始要导入 Requests 模块: 然后,尝试获取某个网页 现...

  • Requests从入门到进阶

    特点 Keep-Alive & 连接池 国际化域名和 URL 带持久 Cookie 的会话 浏览器式的SSL认证 ...

  • Mysql 创建数据表

    Mysql 数据表的创建: 最近几天学习完了python基础语法,准备做一些进阶;目前学习了requests、be...

  • Python进阶记录之requests模块 !

    回顾 在《Python进阶记录之HTMLParser模块》中,我们介绍了Python内置的HTML解析库HTMLP...

  • 爬虫 0&1

    requests.get() 引入requests库 import requests requests.get是在...

  • 信息获取工具

    工具 Requests Selenium Pyppeteer Splash Requests Requests: ...

  • requests xpath 爬虫

    # import requests # import requests # # response=requests...

  • requests(1)

    2、requests请求 请求方法:requests.get requests.post requests.put...

网友评论

      本文标题:requests进阶

      本文链接:https://www.haomeiwen.com/subject/twbeoqtx.html