zoukankan      html  css  js  c++  java
  • request

    1. 介绍

    对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么这一节来简单介绍一下 requests 库的基本用法

    2. 安装

    利用 pip 安装

    pip install requests
    

    3. 基本请求

    req = requests.get("http://www.baidu.com")
    req = requests.post("http://www.baidu.com")
    req = requests.put("http://www.baidu.com")
    req = requests.delete("http://www.baidu.com")
    req = requests.head("http://www.baidu.com")
    req = requests.options("http://www.baidu.com")
    

    3.1 get请求

    参数是字典,我们也可以传递json类型的参数:

    import requests
    
    url = "http://www.baidu.com/s"
    params = {'wd': '尚学堂'}
    response = requests.get(url, params=params)
    print(response.url)
    response.encoding = 'utf-8'
    html = response.text
    # print(html)
    

    3.2 post请求

    参数是字典,我们也可以传递json类型的参数:

    url = "http://www.sxt.cn/index/login/login.html"
    formdata = {
        "user": "17703181473",
        "password": "123456"
    }
    response = requests.post(url, data=formdata)
    response.encoding = 'utf-8'
    html = response.text
    # print(html)
    

    3.3 自定义请求头部

    伪装请求头部是采集时经常用的,我们可以用这个方法来隐藏:

    headers = {'User-Agent': 'python'}
    r = requests.get('http://www.zhidaow.com', headers = headers)
    print(r.request.headers['User-Agent'])
    

    3.4 设置超时时间

    可以通过timeout属性设置超时时间,一旦超过这个时间还没获得响应内容,就会提示错误

    requests.get('http://github.com', timeout=0.001)
    

    3.5 代理访问

    采集时为避免被封IP,经常会使用代理。requests也有相应的proxies属性

    import requests
    
    proxies = {
      "http": "http://10.10.1.10:3128",
      "https": "https://10.10.1.10:1080",
    }
    
    requests.get("http://www.zhidaow.com", proxies=proxies)
    

    如果代理需要账户和密码,则需这样

    proxies = {
        "http": "http://user:pass@10.10.1.10:3128/",
    }
    

    3.6 session自动保存cookies

    seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录

    # 创建一个session对象 
    s = requests.Session() 
    # 用session对象发出get请求,设置cookies 
    s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
    
    
    import requests
    import time
    mycookie = { "PHPSESSID":"56v9clgo1kdfo3q5q8ck0aaaaa" }
    x = requests.session()
    requests.utils.add_dict_to_cookiejar(x.cookies,{"PHPSESSID":"07et4ol1g7ttb0bnjmbiqjhp43"})
    x.get("http://127.0.0.1:80",cookies = mycookie)
    time.sleep(5)
    #请求以后抓包可以检验一下是不是添加成功
    x.get("http://127.0.0.1:80")
    
    

    cookies保存本地和使用

    import requests,json,pprint
    s = requests.session()
    s.headers = {...}
    a = s.get("https://www.baidu.com")
    cookies = requests.utils.dict_from_cookiejar(s.cookies)
    with open(".\cook.txt", "w") as fp:
        json.dump(cookies, fp)
    pprint.pprint(cookies,width=5)
    
    with open(".cook.txt", "w") as fp:
        load_cookies=son.load(fp)
    session.cookie = requests.utils.cookiejar_from_dict(load_cookies)
    

    3.7 ssl验证

    # 禁用安全请求警告
    requests.packages.urllib3.disable_warnings()
    
    resp = requests.get(url, verify=False, headers=headers)
    
    

    4 获取响应信息

    代码 含义
    resp.json() 获取响应内容(以json字符串)
    resp.text 获取响应内容 (以字符串)
    resp.content 获取响应内容(以字节的方式)
    resp.headers 获取响应头内容
    resp.url 获取访问地址
    resp.encoding 获取网页编码
    resp.request.headers 请求头内容
    resp.cookie 获取cookie
  • 相关阅读:
    springboot自定义消息转换器HttpMessageConverter
    fastJson的feature和SerializerFeature属性的解释
    ThreadLocal
    复习面向对象 -- 继承
    复习面向对象--创建对象
    js实现二分查找算法
    SVN问题解决--Attempted to lock an already-locked dir
    封装cookie设置和获取的简易方法
    JS判断客户端是否是iOS或者Android手机移动端(转载)
    【Vue笔记】-- 详解vue生命周期
  • 原文地址:https://www.cnblogs.com/zx125/p/12884336.html
Copyright © 2011-2022 走看看