zoukankan      html  css  js  c++  java
  • requests与urllib.request

    requests很明显,在写法上与urllib.request不同,前者多一个 S.
    导入包时:
    import requests
    import urllib.request
    urllib.request请求模块,用于打开和读取url
    urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
    response.read()可以获取到网页的内容
    timeout参数的使用在某些网络情况不好或者服务器端异常的情况会出现请求慢的情况,或者请求异常,有时也用来解决反爬,控制爬行速度。
    response.status,response.getheaders()【response.headers】【response.info()】获取状态码以及头部信息。response.read()获得的是响应体的内容.
    urlopen()只能用于简单的请求,它无法添加header信息。
    urllib.request.Request(url) 注意大写。
    使用data参数;
    data = urllib.parse.urlencode(dict).encode(‘utf-8’)
    使用data参数如果要传 必须传bytes(字节流) 类型的,如果是一个字典,先用 urllib.parse.urlencode() 编码。
    request = urllib.request.Request(url = url,data = data,headers = headers,method = ‘POST’)
    2.req = urllib.request.Request(url=url,data=data,method=‘POST’)
    req.add_header(‘User-Agent’,'Mozilla/5.0) 添加头部信息
    rulllib.request.ProxyHandler()设置代理,网站会检测某一段时间某个IP 的访问次数,访问次数过多,会禁止访问,使用代理安全系数也会相应提高。
    urllib.error:包含提出有例外的urllib.request
    urllib.parse:用于解析url
    urllib.robotparser:用于解析robots.txt文件。
    requests完全满足网络爬虫的需求,他是在urllib基础上进一步封装,具备urllib的全部功能。

    安装 pip install requests
    基于http的post,get请求
    r = requests.get(url, params=d) 参数d表示值为字符串的字典,d不是必须的
    r = requests.post(url,data=data)post请求需 设置请求参数data
    请求对象response相应内容
    r.status_code:响应状态码
    r.raw:原始响应体,使用r.raw.read()读取
    r.content:字节方式的响应体,需要进行解码
    r.text:字符串形式的响应体,会自动根据响应头部的字符编码进行解码
    r.headers:以字典对象存储服务器响应头,字典见键不区分大小写,若键不存在返回none。
    r.json():Requests中内置的json解码器
    r.raise_for_status():请求失败,抛出异常
    r.url:获取请求链接
    r.cookies:获取请求后的cookie
    r.encoding:获取编码格式
    ---------------------
    作者:秋瑾先生

  • 相关阅读:
    Android JNI之C/C++层调用JAVA
    Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
    Android 开创java世界(JNI Invocation API)
    Android JNI c/c++调用java 无需新建虚拟机
    cmake:善用find_package()提高效率暨查找JNI支持
    如何解决用CMake未定义引用`JNI_CreateJavaVM'?
    [Linker error] undefined reference to `_imp__JNI_CreateJavaVM@12'
    Android jni c/c++线程通过CallVoidMethod调用java函数出现奔溃问题
    【故障公告】部署在 k8s 上的博客后台昨天与今天在访问高峰多次出现 502团队
    上周热点回顾(3.30-4.5)团队
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/11149203.html
Copyright © 2011-2022 走看看