• 安装第三方模块方法和requests


    如何安装第三方模块  

       pip3
            pip3 install xxxx
        
        源码
            下载,解压
            进入目录 python setup.py install

    requests

    最常用的测试方法
    import requests a
    = requests.get("http://127.0.0.1:8000/test/", )

    python 标准库中提供了:urllib等模块以供http请求,但是,它的API太渣了。他是为另一个时代、另一个互联网所创建的。它需要巨大的工作,甚至包括各种方法辅助,来完成简单的工作,所以选择requests
    一堆废话,简单的说就是urllib,urllib2是python底层的东西,当请求URL的时候,requests可以模拟浏览器完成一系列动作,而且代码量比较少,不过urllib也有自己的优势

        import urllib.request  
        f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')  
        result = f.read().decode('utf-8')  
          
        import urllib.request  
        req = urllib.request.Request('http://www.example.com/')  
        req.add_header('Referer','http://www.python.org')  
        r = urllib.request.urlopen(req)  
        result = r.read().decode('utf-8')  

    Requests是使用Aachen2 Licensed 许可证的基于python开发的HTTP库,其在python内置模块的基础上进行了高度的封装,从而使得pythoner进行网络请求时,变的美好许 多,使用Requests可以轻而易举的完成浏览器可有的任何操作

    1)、无参数实例

        import requests  
        ret = requests.get(''https://github.com/timeline.json'')  
        print(ret.url)  
        print(ret.text)  

    2)、有参数实例

        import requests  
        payload = {'key1': 'value1', 'key2': 'value2'}  
        ret = quests.get("http://httpbin.org/get", params=payload)  
        print(ret.url)  
        print(ret.text)  

    3)、其他请求

        requests.get(url,params=None,**kwargs)  
        requests.post(url,data=None,json=None,**kwargs)  
        requests.put(url,data=None,**kwargs)  
        requests.head(url,**kwargs)  
        requests.delete(url,**kwargs)  
        requests.path(url,data=None,**kwargs)  
        requests.options(url,**kwargs)  

    #以上方法是在此方法的基础上构建
    requests.request(method, url, **kwargs)
    更多requests模块相关的文档见:http://cn.python-requests.org/zh_CN/latest/

    4)、http请求和XML实例
    实例:检测qq账号是否在线

        import urllib  
        import requests  
        from xml.etree import ElementTree as ET  
        # 使用内置模块urllib发送HTTP请求,或者XML格式内容  
        """ 
         
        f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508') 
        result = f.read().decode('utf-8') 
         
         
         
        """  
          
          
        # 使用第三方模块requests发送HTTP请求,或者XML格式内容  
          
        r = requests.get('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')  
        result = r.text  
    # 解析XML格式内容
    node = ET.XML(result)
    
    # 获取内容
    if node.text == "Y":
        print("在线")
    else:
        print("离线")
    
    复制代码
    """

    5)、查看火车停靠信息

        import urllib  
        import requests  
        from xml.etree import ElementTree as ET  
          
          
          
          
        # 使用内置模块urllib发送HTTP请求,或者XML格式内容  
        """ 
         
        f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=') 
        result = f.read().decode('utf-8') 
         
         
         
        """  
          
        # 使用第三方模块requests发送HTTP请求,或者XML格式内容  
          
        r = requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')  
        result = r.text  
          
          
          
          
        # 解析XML格式内容  
          
        root = ET.XML(result)  
        for node in root.iter('TrainDetailInfo'):  
            print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib)  

    Requests post方法向后端传递cookie参数, 模拟登陆 --》 注意: 是cookies

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import requests
    
    cookie = {"__sessionId__": "a632155ffbc63469da6b394b9ccacb768f6cc407"}
    
    url = "http://192.168.2.137:8888/show_sample_user_all_article"
    
    session = requests.Session()
    
    ret = session.post(url, data={"UserID": 123456}, cookies=cookie)
    
    result = ret.json()
    
    print(result)
    print(result["value"])

    看源码:

        def post(self, url, data=None, json=None, **kwargs):
            r"""Sends a POST request. Returns :class:`Response` object.
    
            :param url: URL for the new :class:`Request` object.
            :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
            :param json: (optional) json to send in the body of the :class:`Request`.
            :param **kwargs: Optional arguments that ``request`` takes.
            :rtype: requests.Response
            """
    
            return self.request('POST', url, data=data, json=json, **kwargs)
    def request(self, method, url,
                params=None, data=None, headers=None, cookies=None, files=None,
                auth=None, timeout=None, allow_redirects=True, proxies=None,
                hooks=None, stream=None, verify=None, cert=None, json=None):

    requests增加代理模式

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import requests, re, os, sys, random, time
    from bs4 import BeautifulSoup
    from urllib.parse import unquote
    
    def aaa():
        # sum_ip_url = "http://api3.xiguadaili.com/ip/?tid=558422469336006&num=1&protlcol=https"
        sum_ip_url = "http://api3.xiguadaili.com/ip/?tid=558462304396750&num=1000"
        sum_ip_data = requests.get(sum_ip_url)
    
        timeout = 60
        # proxie = {"https": "https://" + random.choice(li)}
        proxie = {"http": "http://" + sum_ip_data.text}
    
        content = requests.get("https://www.cnblogs.com/renfanzi/p/9243400.html", proxies=proxie, timeout=timeout, verify=False).text
        print(str(content))
    
        time.sleep(5)
    
    if __name__ == '__main__':
        # for i in range(50):
    
        aaa()
        # pass
  • 相关阅读:
    elasticsearch 事务日志 sync 都干了些什么?
    elasticsearch 事务日志是个啥东西?
    elasticsearch 分片恢复经历了哪些步骤?
    定向爬取网页内容
    文件查询之三:文件和目录的批量操作
    文件查询之二:文件属性查询
    文件查询之一:文件名和文件后缀查询
    记一次SQL联合查询注入工具的编写
    线程间使用socket通信的计算器
    简单的远程加解密文件
  • 原文地址:https://www.cnblogs.com/renfanzi/p/5643662.html
Copyright © 2020-2023  润新知