安装第三方模块方法和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
原文地址:https://www.cnblogs.com/renfanzi/p/5643662.html