• requests的再次学习



    title: requests模块的再次理解
    date: 2020-03-10 22:44:26
    tags:


    1、response的解析

    当requests模块发送请求后,我们会对其响应的数据也就是response进行解析,解析的方式有两种。

    • response.text

      • 该方法返回的是str。
      • 该方法的默认解码方式是'ISO-8859-1'。
      • 想要更改解码方式,需要设置response的解码方式,如response.encoding = 'uft-8'
    • response.content

      • 该方法返回的是二进制。
      • 该内容解码使用decode()方法即可。
        • decode()方法默认是“uft-8”。
        • 使用其他方式解码只需要传入相关的名称即可,例如:decode("gbk")。

    当然,这些方法首先推荐的是:

    1、response.content.decode()

    2、response.content.decode("gbk")

    3、response.encoding = 'uft-8'

    ​ response.text

    这几个方式可以解决绝大部分的乱码问题。

    2、模拟登陆

    有些网站需要登录后才能查看相关的内容,那么就需要我们在爬取网页内容时进行模拟登陆。

    模拟登陆有两个方式可以实现:

    1、使用session发送post请求登陆,登陆之后再发送get请求即可。

    基本模板:

    # coding=utf-8
    import requests
    session = requests.session()
    #需要根据不同的网站来写
    post_url = "请求的url地址"
    post_data = {"username":"账号..."}
    session.post(post_url,data=post_data)
    #之后session就带了cookie,再次发送get请求就能
    get_url = ""
    response = session.get(get_url)
    

    2、自己手动登陆后会有一个cookie,在发送请求时在请求头中带上这个cookie即可。

    模板:

    # coding=utf-8
    import requests
    headers = {"user-agent":"xxx","cookie":"xxx"}
    get_url = ""
    response = requests.get(get_url,headers)
    

    其实此处也可以将cookie单独拿出来,放入一个字典中,get中有cookie参数,可以再那里传入,但是不太方便,还需要将cookie中的键值对一个个放入。

    3、使用代理

    这个就不用多说了,要注意的是如果访问http地址,就需要可以访问http的代理,https同理。

    # coding=utf-8
    import requests
    headers = {"user-agent":"xxx","cookie":"xxx"}
    get_url = ""
    # 后方是个端口号
    proxy = {"http":"http://123.54.67.48:80"}
    response = requests.get(get_url,headers = headers,proxies = proxy)
    

    (不知道为何pycharm代码提示不提示proxies!-_-||||)

  • 相关阅读:
    二次冲刺站立会议五
    二次冲刺站立会议四
    二次冲刺站立会议三
    二次冲刺站立会议二
    自己常用网址导航
    Eclipse几个配置
    JVM参数和jvm.log
    JVM性能监控命令
    Linux基本信息查看命令
    Linux IO性能监控工具
  • 原文地址:https://www.cnblogs.com/wuren-best/p/12459663.html
Copyright © 2020-2023  润新知