最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python爬虫之request模块

    正文概述    2020-10-09   227

    Python爬虫之request模块

    爬虫——requests模块

    Requests继承了urllib.request的所有特性,Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和POST数据自动编码。

    相较于urllib.request而言,其使用更加简洁方便。

    基本GET请求(headers参数和parmas参数)

    1.最基本的GET请求可以直接用get方法

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
    import requests
     
    response = requests.get("http://www.baidu.com/")
    # 也可以这么写
    # response = requests.request("get", "http://www.baidu.com/")

    2.添加headers和查询参数

    如果想添加headers,可以传入headers参数来增加请求头中的headers信息。如果要将参数放在url中传递,可以利用params参数。

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
     
    import requests
     
    url = "http://www.baidu.com/s?"
     
    kw = {"wd":"爬虫"}
     
    # User-Agent头
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
     
    # params接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
    response = requests.get(url = url, params = kw, headers = header)
     
    # 打印响应内容,response.text返回的是Unicode格式的数据
    print(response.text)
    # 打印响应内容,response.content返回的是字节流数据
    # print(response.content)
     
    # 查看完整的url地址
    print(response.url)
     
    # 查看响应头部字符编码
    print(response.encoding)
     
    # 查看响应码
    print(response.status_code)

    使用response.text时,requests会基于HTTP响应的文本编码自动解码响应内容,大多数Unicode字符集都能被无缝地解码。

    使用response.content时,返回的是服务器响应数据的原始二进制字节流,可以用来保存图片等二进制文件。

    基本POST讨还(data参数)

    1.最基本的GET请求可以直接用post方法

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
     
    import requests
     
    response = requests.post("http://www.baidu.com/")
    # 也可以这么写
    # response = requests.request("post", "http://www.baidu.com/")

    相关推荐:《Python视频教程》

    2.传入data数据

    对于POST请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用data这个参数。

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
     
    import requests
     
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
     
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
     
    word = input("请输入需要翻译的词条:")
     
    from_data = {
        "i":word,
        "from":"AUTO",
        "to":"AUTO",
        "smartresult":"dict",
        "doctype":"json",
        "version":"2.1",
        "keyfrom":"fanyi.wed"
    }
     
    response = requests.post(url = url, data = from_data, headers = header)
     
    # print(response.text)
    print(response.json())

    代理(proxies参数)

    如果需要使用代理,你可以通过为任意请求方法提供proxies参数来配置单个请求:

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
    __author__ = 'mayi'
     
    import requests
     
    # 根据协议类型,选择不同的代理
    proxies = {
        "http": "http://12.34.56.78:90",
        "https": "http://21.43.65.87:90"
    }
     
    response = requests.get("http://www.baidu.com/", proxies = proxies)
     
    print(response.text)

    Cookies和Sission

    1.Cookies

    如果一个响应中包含了cookie,那么我们可以利用cookies参数拿到:

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
    __author__ = 'mayi'
     
    import requests
     
    response = requests.get("http://www.baidu.com/")
     
    cookiejar = response.cookies
     
    cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
     
    print(cookiejar)
     
    print(cookiedict)

    2.Sission

    在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端连接服务器开始,到客户端浏览器与服务器断开。

    会话能让我们在跨请求时候保持某些参数,比如在同一个Session实例发出的所有请求之间保持cookie。

    实现人人网登录

    #!/usr/bin/python3
    # -*- coding:utf-8 -*-
    __author__ = 'mayi'
     
    import requests
     
    # 创建session对象,用于保存Cookie值
    session = requests.session()
     
    # User-Agent头
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
     
    # 需要登录的账户和密码
    email = input("请输入您的账户:")
    password = input("请输入您的密码:")
    data = {"email": email, "password": password}
     
    # 发送附带账户密码的请求,并获取登录后的Cookie值,保存在session中
    session.post("http://www.renren.com/PLogin.do", data = data)
     
    # session中包含了登录后的Cookie值,可以直接访问那些需登录后才能访问的页面
    response = session.get("http://www.renren.com/413928886/profile")
     
    # 打印响应内容
    print(response.text)

    下载网 » Python爬虫之request模块

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元