精华内容
下载资源
问答
  • python requests 模块

    2016-05-18 13:01:21
    python requests 模块,更加方便快捷的使用python进行网络开发。
  • Python requests 模块

    2019-10-02 12:34:30
    Python requests 模块  requests 模块是我们使用的 python爬虫 模块 可以...requests模块代码编写的流程: - 指定url - 发起请求 - 获取响应对象中的数据 - 持久化存储 -------------案例----------...

    Python requests 模块

      requests 模块是我们使用的 python爬虫 模块 可以完成市场进80%的爬虫需求。

    安装

    • pip install requests

    使用

    requests模块代码编写的流程:

    • - 指定url
    • - 发起请求
    • - 获取响应对象中的数据
    • - 持久化存储
    -------------案例-------------------------
    import requests
    # 指定url
    url="https://www.sogou.com/"
    # 发起请求
    response = requests.get(url)
    # 获取响应对象中的数据
    page_text = response.text
    # 持久化存储
    with open('./sogou.html','w',encoding='utf-8') as fp:
        fp.write()
    -------------------------------------------

    参数

    # post 数据
    response = requests.post(url=url,data=data,headers=headers)
    
    # get 数据
    response = requests.get(url=url,data=data,headers=headers)
    
    # 返回二进制数据
    response.content  
    
    # 返回字符串数据    
    response.text    
    
    # 返回json对象     
    response.json()       

    其他了解

    1、该模块实现爬取数据前需要查找需要爬取数据的指定URL,可通过浏览器自带抓包功能。

    # 浏览器抓取 Ajax 请求
    F12 --> Network --> XHR --> Name --> Response

    2、上面的headers参数是进行UA伪装为了反反爬

    反爬机制:UA检测 --> UA伪装

    3、下面是http我们爬包是常用的请求头参数

      - accept: 浏览器通过这个头告诉服务器,他所支持的数据类型
      
    - Accept-Charset:浏览器通过这个头告诉服务器,它支持那种字符集
      
    - Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
      
    - Accept-Language:浏览器通过这个头告诉服务器,他的语言环境
      
    - Host:浏览器同过这个头告诉服务器,想访问哪台主机
      
    - If-ModifiedSince:浏览器通过这个头告诉服务器,缓存数据的时间
      
    - Heferer:浏览器通过这个头告诉服务器,客户及时那个页面来的,防盗链
      
    - Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是保持链接
      
    - X-Requested-With:XMLHttpRequest 代表通过ajax方式进行访问
      
    - User-Agent:请求载体的身份标识

    持续跟进...

     

    转载于:https://www.cnblogs.com/xiangsikai/p/11251530.html

    展开全文
  • Python requests模块

    2017-05-23 10:39:19
    Python requests模块 1、Requests模块说明 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想。 Python 标准库中的 urllib2 模块提供了你所需要的...

    Python requests模块


    1、Requests模块说明

    Requests 是使用 Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想。

    Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

    在Python的世界里,事情不应该这么麻烦。

    Requests 使用的是 urllib3,因此继承了它的所有特性。Requests 支持 HTTP 连接保持和连接池,支持使用 cookie 保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。现代、国际化、人性化。

    (以上转自Requests官方文档)

    2、Requests模块安装

    点此下载

    然后执行安装

    1
    $ python setup.py install

    个人推荐使用pip安装

    1
    pip install requests

    也可以使用easy_install安装

    1
    easy_install requests

    尝试在IDE中import requests,如果没有报错,那么安装成功。

    3、Requests模块简单入门

    复制代码
    #HTTP请求类型
    #get类型
    r = requests.get('https://github.com/timeline.json')
    #post类型
    r = requests.post("http://m.ctrip.com/post")
    #put类型
    r = requests.put("http://m.ctrip.com/put")
    #delete类型
    r = requests.delete("http://m.ctrip.com/delete")
    #head类型
    r = requests.head("http://m.ctrip.com/head")
    #options类型
    r = requests.options("http://m.ctrip.com/get")
    
    #获取响应内容
    print r.content #以字节的方式去显示,中文显示为字符
    print r.text #以文本的方式去显示
    
    #URL传递参数
    payload = {'keyword': '日本', 'salecityid': '2'}
    r = requests.get("http://m.ctrip.com/webapp/tourvisa/visa_list", params=payload) 
    print r.url #示例为http://m.ctrip.com/webapp/tourvisa/visa_list?salecityid=2&keyword=日本
    
    #获取/修改网页编码
    r = requests.get('https://github.com/timeline.json')
    print r.encoding
    r.encoding = 'utf-8'
    
    #json处理
    r = requests.get('https://github.com/timeline.json')
    print r.json() #需要先import json    
    
    #定制请求头
    url = 'http://m.ctrip.com'
    headers = {'User-Agent' : 'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'}
    r = requests.post(url, headers=headers)
    print r.request.headers
    
    #复杂post请求
    url = 'http://m.ctrip.com'
    payload = {'some': 'data'}
    r = requests.post(url, data=json.dumps(payload)) #如果传递的payload是string而不是dict,需要先调用dumps方法格式化一下
    
    #post多部分编码文件
    url = 'http://m.ctrip.com'
    files = {'file': open('report.xls', 'rb')}
    r = requests.post(url, files=files)
    
    #响应状态码
    r = requests.get('http://m.ctrip.com')
    print r.status_code
        
    #响应头
    r = requests.get('http://m.ctrip.com')
    print r.headers
    print r.headers['Content-Type']
    print r.headers.get('content-type') #访问响应头部分内容的两种方式
        
    #Cookies
    url = 'http://example.com/some/cookie/setting/url'
    r = requests.get(url)
    r.cookies['example_cookie_name']    #读取cookies
        
    url = 'http://m.ctrip.com/cookies'
    cookies = dict(cookies_are='working')
    r = requests.get(url, cookies=cookies) #发送cookies
    
    #设置超时时间
    r = requests.get('http://m.ctrip.com', timeout=0.001)
    
    #设置访问代理
    proxies = {
               "http": "http://10.10.10.10:8888",
               "https": "http://10.10.10.100:4444",
              }
    r = requests.get('http://m.ctrip.com', proxies=proxies)
    复制代码

    4、Requests示例

    json请求

    复制代码
     1 #!/user/bin/env python
     2 #coding=utf-8
     3 import requests
     4 import json
     5 
     6 class url_request():
     7     def __init__(self):
     8             """ init """    
     9 
    10 if __name__=='__main__':
    11     headers = {'Content-Type' : 'application/json'}
    12     payload = {'CountryName':'中国',
    13                'ProvinceName':'陕西省',
    14                'L1CityName':'汉中',
    15                'L2CityName':'城固',
    16                'TownName':'',
    17                'Longitude':'107.33393',
    18                'Latitude':'33.157131',
    19                'Language':'CN'
    20                }
    21     r = requests.post("http://www.xxxxxx.com/CityLocation/json/LBSLocateCity",headers=headers,data=payload)
    22     #r.encoding = 'utf-8'
    23     data=r.json()
    24     if r.status_code!=200:
    25         print "LBSLocateCity API Error " + str(r.status_code)
    26     print data['CityEntities'][0]['CityID'] #打印返回json中的某个key的value
    27     print data['ResponseStatus']['Ack']
    28     print json.dumps(data,indent=4,sort_keys=True,ensure_ascii=False) #树形打印json,ensure_ascii必须设为False否则中文会显示为unicode
    复制代码

     

    xml请求

    复制代码
    #!/user/bin/env python
    #coding=utf-8
    import requests
    
    class url_request():
        def __init__(self):
                """ init """    
    
    if __name__=='__main__':
        
        headers = {'Content-type': 'text/xml'}
        XML = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><Request xmlns="http://tempuri.org/"><jme><JobClassFullName>WeChatJSTicket.JobWS.Job.JobRefreshTicket,WeChatJSTicket.JobWS</JobClassFullName><Action>RUN</Action><Param>1</Param><HostIP>127.0.0.1</HostIP><JobInfo>1</JobInfo><NeedParallel>false</NeedParallel></jme></Request></soap:Body></soap:Envelope>'
        url = 'http://jobws.push.mobile.xxxxxxxx.com/RefreshWeiXInTokenJob/RefreshService.asmx'
        r = requests.post(url,headers=headers,data=XML)
        #r.encoding = 'utf-8'
        data = r.text
        print data
    复制代码

     

    5、参考文档

    http://cn.python-requests.org/en/latest/

    http://docs.python-requests.org/en/latest/user/quickstart.html

    展开全文
  • python requests模块

    2017-12-05 17:48:00
    在我们日常工作中,经常会遇到与网站交互的问题,这时候我们最常用的就是python requests模块。 转载于:https://www.cnblogs.com/fengjunhua/p/7988503.html

    在我们日常工作中,经常会遇到与网站交互的问题,这时候我们最常用的就是python requests模块。

    转载于:https://www.cnblogs.com/fengjunhua/p/7988503.html

    展开全文
  • 浅析Python requests 模块

    2020-12-16 21:57:01
    requests模块代码编写的流程: – 指定url – 发起请求 – 获取响应对象中的数据 – 持久化存储 -------------案例------------------------- import requests # 指定url url="https://www.sogou.com/" # 发起...
  • Python Requests模块

    千次阅读 2016-09-15 17:21:58
    这样更加灵活且可改变和配置),线上系统和改进后的测试系统需要测试api来对比获取的数据是否一致从而升级系统,因此可以通过python强大的requests模块来请求线上和测试系统的api来对比结果。 那么先贴一下脚本再...

    需求一:现在有一个需求就是系统进行了改进(比如将读取配置文件获取数据信息改成了请求gateway来获取数据,这样更加灵活且可改变和配置),线上系统和改进后的测试系统需要测试api来对比获取的数据是否一致从而升级系统,因此可以通过python强大的requests模块来请求线上和测试系统的api来对比结果。

    那么先贴一下脚本再简要介绍一下requests的使用:

    compare.py:

    #!/usr/bin/python
    
    import os
    import sys
    import urllib2
    import requests
    
    URI_API_ONLINE = "http://10.0.0.1"
    URI_API_TEST = "http://10.0.0.2"
    
    def get_data(api,line):
        url = api + '/' + line
        res = requests.get(url)
        if res.status_code == 200:
            return res.json()
    
    def compare(d_online, d_test):
        if d_online['code'] == 'A00000' and d_test['code'] == 'A00000':
            data_online = d_online['data']
            data_test = d_test['data']
            #online data
            internal_uri_online = data_online['internal_uri']
            uri_online = data_online['uri']
            external_uri_online = data_online['external_uri']
            storage_online = data_online['storage']
    
            #test data
            internal_uri_test = data_test['internal_uri']
            uri_test = data_test['uri']
            external_uri_test = data_test['external_uri']
            storage_test = data_test['storage']
    
            if internal_uri_test == internal_uri_online and uri_test == uri_online and external_uri_test == external_uri_online and storage_online == storage_test:
                return True
            else:
                return False
    
    if __name__ == "__main__":
        fd = open('./linklist','r')
        for line in fd:
            line = line.strip()
            data_online = get_data(URI_API_ONLINE,line)
            data_test = get_data(URI_API_TEST,line)
    
            res = compare(data_online,data_test)
            if res:
                print 'yes,same.'
            else:
                print 'no,not same'
                print line
                print data_online
                print data_test
                print '\n'

    linklist文件:

    /uri?bizid=appstore_prod&location=jy&production=appstore&type=prod&role=appstore
    /uri?bizid=appstore_test&location=jy&production=appstore&type=prod&role=appstore
    /uri?bizid=bj_ptc_log_prod&location=bj&production=ptc_log&type=prod&role=ptc_log
    /uri?bizid=bj_qixiao_prod&location=bj&production=qixiao&type=prod&role=qixiao
    /uri?bizid=cserver_prod&location=jy&production=cserver&type=prod&role=cserver
    /uri?bizid=cserver_test&location=jy&production=cserver&type=test&role=cserver
    /uri?bizid=jy_71src_prod&location=jy&production=71src&type=prod&role=71src
    /uri?bizid=jy_ota_prod&location=jy&production=ota&type=prod&role=ota
    /uri?bizid=lutai_prod&location=bj&production=lutai&type=prod&role=lutai
    /uri?bizid=lutai_test&location=bj&production=lutai&type=test&role=lutai
    /uri?bizid=papaqi_prod&location=jy&production=papaqi&type=prod&role=papaqi
    /uri?bizid=papaqi_test&location=jy&production=papaqi&type=test&role=papaqi
    /uri?bizid=reading_prod&location=bj&production=reading&type=prod&role=reading
    /uri?bizid=reading_test&location=bj&production=reading&type=test&role=reading
    /uri?bizid=vtc_gif_prod&location=sh&production=vtc_gif&type=prod&role=vtc_gif
    /uri?bizid=vtc_gif_test&location=sh&production=vtc_gif&type=test&role=vtc_gif


    下载文件并保存到本地文件中:

    resp = requests.get(url)
    with open(download_file_path,"wb") as f:
    	f.write(resp.content)
    文件保存到download_file_path中。


    Post Json格式表单数据

    > curl -d '{"auth": {"tenantName": "demoTenant", "passwordCredentials":{"username": "admin", "password": "admin"}}}' -H "Content-type: application/json" http://XXXX:35357/v2.0/tokens | python -mjson.tool
    >错误:resp = requests.post(url,headers=headers,data=auth)
    报错:400 Bad Request Malformed json in request body
    正确1:resp = requests.post(url,headers=headers,data=json.dumps(auth))
    正确2:resp = requests.post(url,headers=headers,json=auth)

    Requests GET大文件的方法

    需要设置requests的get中的stream参数为True。

    def download(uri):
        global token
        headers = {'X-Auth-Token':token}
        resp = requests.get(uri,headers=headers,stream=True)
        with open(("%s/%s" % (data_dir,"file_download")),"wb") as f:
            for chunk in resp.iter_content(chunk_size=1024):
                if chunk:                                                                                                                                                                        
                    f.write(chunk)
        return ("%s/%s" % (data_dir,"file_download"))
    Reference:

    http://stackoverflow.com/questions/16694907/how-to-download-large-file-in-python-with-requests-py

    http://stackoverflow.com/questions/14114729/save-a-large-file-using-the-python-requests-library




    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,165
精华内容 2,866
关键字:

pythonrequests模块

python 订阅