{"id":4560,"date":"2022-03-27T11:08:54","date_gmt":"2022-03-27T03:08:54","guid":{"rendered":"https:\/\/egonlin.com\/?p=4560"},"modified":"2023-02-02T18:22:10","modified_gmt":"2023-02-02T10:22:10","slug":"%e7%ac%ac%e4%b8%80%e8%8a%82%ef%bc%9a%e8%af%b7%e6%b1%82%e5%ba%93%e4%b9%8brequests%e5%ba%93","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=4560","title":{"rendered":"\u7b2c\u4e00\u8282\uff1a\u8bf7\u6c42\u5e93\u4e4brequests\u5e93"},"content":{"rendered":"<h1>\u4e00 \u4ecb\u7ecd<\/h1>\n<pre><code>#\u4ecb\u7ecd\uff1a\u4f7f\u7528requests\u53ef\u4ee5\u6a21\u62df\u6d4f\u89c8\u5668\u7684\u8bf7\u6c42\uff0c\u6bd4\u8d77\u4e4b\u524d\u7528\u5230\u7684urllib\uff0crequests\u6a21\u5757\u7684api\u66f4\u52a0\u4fbf\u6377\uff08\u672c\u8d28\u5c31\u662f\u5c01\u88c5\u4e86urllib3\uff09\n\n#\u6ce8\u610f\uff1arequests\u5e93\u53d1\u9001\u8bf7\u6c42\u5c06\u7f51\u9875\u5185\u5bb9\u4e0b\u8f7d\u4e0b\u6765\u4ee5\u540e\uff0c\u5e76\u4e0d\u4f1a\u6267\u884cjs\u4ee3\u7801\uff0c\u8fd9\u9700\u8981\u6211\u4eec\u81ea\u5df1\u5206\u6790\u76ee\u6807\u7ad9\u70b9\u7136\u540e\u53d1\u8d77\u65b0\u7684request\u8bf7\u6c42\n\n#\u5b89\u88c5\uff1apip3 install requests\n\n#\u5404\u79cd\u8bf7\u6c42\u65b9\u5f0f\uff1a\u5e38\u7528\u7684\u5c31\u662frequests.get()\u548crequests.post()\n>&gt;&gt; import requests\n>&gt;&gt; r = requests.get(&#039;https:\/\/api.github.com\/events&#039;)\n>&gt;&gt; r = requests.post(&#039;http:\/\/httpbin.org\/post&#039;, data = {&#039;key&#039;:&#039;value&#039;})\n>&gt;&gt; r = requests.put(&#039;http:\/\/httpbin.org\/put&#039;, data = {&#039;key&#039;:&#039;value&#039;})\n>&gt;&gt; r = requests.delete(&#039;http:\/\/httpbin.org\/delete&#039;)\n>&gt;&gt; r = requests.head(&#039;http:\/\/httpbin.org\/get&#039;)\n>&gt;&gt; r = requests.options(&#039;http:\/\/httpbin.org\/get&#039;)\n\n#\u5efa\u8bae\u5728\u6b63\u5f0f\u5b66\u4e60requests\u524d\uff0c\u5148\u719f\u6089\u4e0bHTTP\u534f\u8bae\nhttp:\/\/www.cnblogs.com\/linhaifeng\/p\/6266327.html\n<\/code><\/pre>\n<p>\u5b98\u7f51\u94fe\u63a5\uff1a<a href=\"http:\/\/docs.python-requests.org\/en\/master\/\">http:\/\/docs.python-requests.org\/en\/master\/<\/a><\/p>\n<h1>\u4e8c \u57fa\u4e8eGET\u8bf7\u6c42<\/h1>\n<h2>1\u3001\u57fa\u672c\u8bf7\u6c42<\/h2>\n<pre><code>import requests\nresponse=requests.get(&#039;http:\/\/dig.chouti.com\/&#039;)\nprint(response.text)<\/code><\/pre>\n<h2>2\u3001\u5e26\u53c2\u6570\u7684GET\u8bf7\u6c42-&gt;params<\/h2>\n<p><strong>\u81ea\u5df1\u62fc\u63a5GET\u53c2\u6570<\/strong><\/p>\n<pre><code>#\u5728\u8bf7\u6c42\u5934\u5185\u5c06\u81ea\u5df1\u4f2a\u88c5\u6210\u6d4f\u89c8\u5668\uff0c\u5426\u5219\u767e\u5ea6\u4e0d\u4f1a\u6b63\u5e38\u8fd4\u56de\u9875\u9762\u5185\u5bb9\nimport requests\nresponse=requests.get(&#039;https:\/\/www.baidu.com\/s?wd=python&amp;pn=1&#039;,\n                      headers={\n                        &#039;User-Agent&#039;:&#039;Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/62.0.3202.75 Safari\/537.36&#039;,\n                      })\nprint(response.text)\n\n#\u5982\u679c\u67e5\u8be2\u5173\u952e\u8bcd\u662f\u4e2d\u6587\u6216\u8005\u6709\u5176\u4ed6\u7279\u6b8a\u7b26\u53f7\uff0c\u5219\u4e0d\u5f97\u4e0d\u8fdb\u884curl\u7f16\u7801\nfrom urllib.parse import urlencode\nwd=&#039;egon\u8001\u5e08&#039;\nencode_res=urlencode({&#039;k&#039;:wd},encoding=&#039;utf-8&#039;)\nkeyword=encode_res.split(&#039;=&#039;)[1]\nprint(keyword)\n# \u7136\u540e\u62fc\u63a5\u6210url\nurl=&#039;https:\/\/www.baidu.com\/s?wd=%s&amp;pn=1&#039; %keyword\n\nresponse=requests.get(url,\n                      headers={\n                        &#039;User-Agent&#039;:&#039;Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/62.0.3202.75 Safari\/537.36&#039;,\n                      })\nres1=response.text<\/code><\/pre>\n<p><strong>params\u53c2\u6570\u7684\u4f7f\u7528<\/strong><\/p>\n<pre><code>#\u4e0a\u8ff0\u64cd\u4f5c\u53ef\u4ee5\u7528requests\u6a21\u5757\u7684\u4e00\u4e2aparams\u53c2\u6570\u641e\u5b9a\uff0c\u672c\u8d28\u8fd8\u662f\u8c03\u7528urlencode\nfrom urllib.parse import urlencode\nwd=&#039;egon\u8001\u5e08&#039;\npn=1\n\nresponse=requests.get(&#039;https:\/\/www.baidu.com\/s&#039;,\n                      params={\n                          &#039;wd&#039;:wd,\n                          &#039;pn&#039;:pn\n                      },\n                      headers={\n                        &#039;User-Agent&#039;:&#039;Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/62.0.3202.75 Safari\/537.36&#039;,\n                      })\nres2=response.text\n\n#\u9a8c\u8bc1\u7ed3\u679c\uff0c\u6253\u5f00a.html\u4e0eb.html\u9875\u9762\u5185\u5bb9\u4e00\u6837\nwith open(&#039;a.html&#039;,&#039;w&#039;,encoding=&#039;utf-8&#039;) as f:\n    f.write(res1) \nwith open(&#039;b.html&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:\n    f.write(res2)<\/code><\/pre>\n<h2>3\u3001\u5e26\u53c2\u6570\u7684GET\u8bf7\u6c42-&gt;headers<\/h2>\n<pre><code>#\u901a\u5e38\u6211\u4eec\u5728\u53d1\u9001\u8bf7\u6c42\u65f6\u90fd\u9700\u8981\u5e26\u4e0a\u8bf7\u6c42\u5934\uff0c\u8bf7\u6c42\u5934\u662f\u5c06\u81ea\u8eab\u4f2a\u88c5\u6210\u6d4f\u89c8\u5668\u7684\u5173\u952e\uff0c\u5e38\u89c1\u7684\u6709\u7528\u7684\u8bf7\u6c42\u5934\u5982\u4e0b\nHost\nReferer #\u5927\u578b\u7f51\u7ad9\u901a\u5e38\u90fd\u4f1a\u6839\u636e\u8be5\u53c2\u6570\u5224\u65ad\u8bf7\u6c42\u7684\u6765\u6e90\nUser-Agent #\u5ba2\u6237\u7aef\nCookie #Cookie\u4fe1\u606f\u867d\u7136\u5305\u542b\u5728\u8bf7\u6c42\u5934\u91cc\uff0c\u4f46requests\u6a21\u5757\u6709\u5355\u72ec\u7684\u53c2\u6570\u6765\u5904\u7406\u4ed6\uff0cheaders={}\u5185\u5c31\u4e0d\u8981\u653e\u5b83\u4e86<\/code><\/pre>\n<pre><code>#\u6dfb\u52a0headers(\u6d4f\u89c8\u5668\u4f1a\u8bc6\u522b\u8bf7\u6c42\u5934,\u4e0d\u52a0\u53ef\u80fd\u4f1a\u88ab\u62d2\u7edd\u8bbf\u95ee,\u6bd4\u5982\u8bbf\u95eehttps:\/\/www.zhihu.com\/explore)\nimport requests\nresponse=requests.get(&#039;https:\/\/www.zhihu.com\/explore&#039;)\nresponse.status_code #500\n\n#\u81ea\u5df1\u5b9a\u5236headers\nheaders={\n    &#039;User-Agent&#039;:&#039;Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/46.0.2490.76 Mobile Safari\/537.36&#039;,\n\n}\nrespone=requests.get(&#039;https:\/\/www.zhihu.com\/explore&#039;,\n                     headers=headers)\nprint(respone.status_code) #200<\/code><\/pre>\n<h2>4\u3001\u5e26\u53c2\u6570\u7684GET\u8bf7\u6c42-&gt;cookies<\/h2>\n<pre><code>#\u767b\u5f55github\uff0c\u7136\u540e\u4ece\u6d4f\u89c8\u5668\u4e2d\u83b7\u53d6cookies\uff0c\u4ee5\u540e\u5c31\u53ef\u4ee5\u76f4\u63a5\u62ff\u7740cookie\u767b\u5f55\u4e86\uff0c\u65e0\u9700\u8f93\u5165\u7528\u6237\u540d\u5bc6\u7801\n#\u7528\u6237\u540d:egonlin \u90ae\u7bb1378533872@qq.com \u5bc6\u7801lhf@123\n\nimport requests\n\nCookies={   &#039;user_session&#039;:&#039;wGMHFJKgDcmRIVvcA14_Wrt_3xaUyJNsBnPbYzEL6L0bHcfc&#039;,\n}\n\nresponse=requests.get(&#039;https:\/\/github.com\/settings\/emails&#039;,\n             cookies=Cookies) #github\u5bf9\u8bf7\u6c42\u5934\u6ca1\u6709\u4ec0\u4e48\u9650\u5236\uff0c\u6211\u4eec\u65e0\u9700\u5b9a\u5236user-agent\uff0c\u5bf9\u4e8e\u5176\u4ed6\u7f51\u7ad9\u53ef\u80fd\u8fd8\u9700\u8981\u5b9a\u5236\n\nprint(&#039;378533872@qq.com&#039; in response.text) #True<\/code><\/pre>\n<h1>\u4e09 \u57fa\u4e8ePOST\u8bf7\u6c42<\/h1>\n<h2>1\u3001\u4ecb\u7ecd<\/h2>\n<pre><code>#GET\u8bf7\u6c42\nHTTP\u9ed8\u8ba4\u7684\u8bf7\u6c42\u65b9\u6cd5\u5c31\u662fGET\n     * \u6ca1\u6709\u8bf7\u6c42\u4f53\n     * \u6570\u636e\u5fc5\u987b\u57281K\u4e4b\u5185\uff01\n     * GET\u8bf7\u6c42\u6570\u636e\u4f1a\u66b4\u9732\u5728\u6d4f\u89c8\u5668\u7684\u5730\u5740\u680f\u4e2d\n\nGET\u8bf7\u6c42\u5e38\u7528\u7684\u64cd\u4f5c\uff1a\n       1. \u5728\u6d4f\u89c8\u5668\u7684\u5730\u5740\u680f\u4e2d\u76f4\u63a5\u7ed9\u51faURL\uff0c\u90a3\u4e48\u5c31\u4e00\u5b9a\u662fGET\u8bf7\u6c42\n       2. \u70b9\u51fb\u9875\u9762\u4e0a\u7684\u8d85\u94fe\u63a5\u4e5f\u4e00\u5b9a\u662fGET\u8bf7\u6c42\n       3. \u63d0\u4ea4\u8868\u5355\u65f6\uff0c\u8868\u5355\u9ed8\u8ba4\u4f7f\u7528GET\u8bf7\u6c42\uff0c\u4f46\u53ef\u4ee5\u8bbe\u7f6e\u4e3aPOST\n\n#POST\u8bf7\u6c42\n(1). \u6570\u636e\u4e0d\u4f1a\u51fa\u73b0\u5728\u5730\u5740\u680f\u4e2d\n(2). \u6570\u636e\u7684\u5927\u5c0f\u6ca1\u6709\u4e0a\u9650\n(3). \u6709\u8bf7\u6c42\u4f53\n(4). \u8bf7\u6c42\u4f53\u4e2d\u5982\u679c\u5b58\u5728\u4e2d\u6587\uff0c\u4f1a\u4f7f\u7528URL\u7f16\u7801\uff01\n\n#\uff01\uff01\uff01requests.post()\u7528\u6cd5\u4e0erequests.get()\u5b8c\u5168\u4e00\u81f4\uff0c\u7279\u6b8a\u7684\u662frequests.post()\u6709\u4e00\u4e2adata\u53c2\u6570\uff0c\u7528\u6765\u5b58\u653e\u8bf7\u6c42\u4f53\u6570\u636e<\/code><\/pre>\n<h2>2\u3001\u53d1\u9001post\u8bf7\u6c42\uff0c\u6a21\u62df\u6d4f\u89c8\u5668\u7684\u767b\u5f55\u884c\u4e3a<\/h2>\n<pre><code>#\u5bf9\u4e8e\u767b\u5f55\u6765\u8bf4\uff0c\u5e94\u8be5\u8f93\u9519\u7528\u6237\u540d\u6216\u5bc6\u7801\u7136\u540e\u5206\u6790\u6293\u5305\u6d41\u7a0b\uff0c\u7528\u8111\u5b50\u60f3\u4e00\u60f3\uff0c\u8f93\u5bf9\u4e86\u6d4f\u89c8\u5668\u5c31\u8df3\u8f6c\u4e86\uff0c\u8fd8\u5206\u6790\u4e2a\u6bdb\u7ebf\uff0c\u7d2f\u6b7b\u4f60\u4e5f\u627e\u4e0d\u5230\u5305<\/code><\/pre>\n<p><strong>\u81ea\u52a8\u767b\u5f55github\uff08\u81ea\u5df1\u5904\u7406cookie\u4fe1\u606f\uff09<\/strong><\/p>\n<pre><code>\u4e00 \u76ee\u6807\u7ad9\u70b9\u5206\u6790\n    \u6d4f\u89c8\u5668\u8f93\u5165https:\/\/github.com\/login\n    \u7136\u540e\u8f93\u5165\u9519\u8bef\u7684\u8d26\u53f7\u5bc6\u7801\uff0c\u6293\u5305\n    \u53d1\u73b0\u767b\u5f55\u884c\u4e3a\u662fpost\u63d0\u4ea4\u5230\uff1ahttps:\/\/github.com\/session\n    \u800c\u4e14\u8bf7\u6c42\u5934\u5305\u542bcookie\n    \u800c\u4e14\u8bf7\u6c42\u4f53\u5305\u542b\uff1a\n        commit:Sign in\n        utf8:\u2713\n        authenticity_token:lbI8IJCwGslZS8qJPnof5e7ZkCoSoMn6jmDTsL1r\/m06NLyIbw7vCrpwrFAPzHMep3Tmf\/TSJVoXWrvDZaVwxQ==\n        login:egonlin\n        password:123\n\n\u4e8c \u6d41\u7a0b\u5206\u6790\n    \u5148GET\uff1ahttps:\/\/github.com\/login\u62ff\u5230\u521d\u59cbcookie\u4e0eauthenticity_token\n    \u8fd4\u56dePOST\uff1ahttps:\/\/github.com\/session\uff0c \u5e26\u4e0a\u521d\u59cbcookie\uff0c\u5e26\u4e0a\u8bf7\u6c42\u4f53\uff08authenticity_token\uff0c\u7528\u6237\u540d\uff0c\u5bc6\u7801\u7b49\uff09\n    \u6700\u540e\u62ff\u5230\u767b\u5f55cookie\n<\/code><\/pre>\n<p>ps\uff1a\u5982\u679c\u5bc6\u7801\u65f6\u5bc6\u6587\u5f62\u5f0f\uff0c\u5219\u53ef\u4ee5\u5148\u8f93\u9519\u8d26\u53f7\uff0c\u8f93\u5bf9\u5bc6\u7801\uff0c\u7136\u540e\u5230\u6d4f\u89c8\u5668\u4e2d\u62ff\u5230\u52a0\u5bc6\u540e\u7684\u5bc6\u7801\uff0cgithub\u7684\u5bc6\u7801\u662f\u660e\u6587<\/p>\n<pre><code>\n&#039;&#039;&#039;\n\nimport requests\nimport re\n\n#\u7b2c\u4e00\u6b21\u8bf7\u6c42\nr1=requests.get(&#039;https:\/\/github.com\/login&#039;)\nr1_cookie=r1.cookies.get_dict() #\u62ff\u5230\u521d\u59cbcookie(\u672a\u88ab\u6388\u6743)\nauthenticity_token=re.findall(r&#039;name=&quot;authenticity_token&quot;.*?value=&quot;(.*?)&quot;&#039;,r1.text)[0] #\u4ece\u9875\u9762\u4e2d\u62ff\u5230CSRF TOKEN\n\n#\u7b2c\u4e8c\u6b21\u8bf7\u6c42\uff1a\u5e26\u7740\u521d\u59cbcookie\u548cTOKEN\u53d1\u9001POST\u8bf7\u6c42\u7ed9\u767b\u5f55\u9875\u9762\uff0c\u5e26\u4e0a\u8d26\u53f7\u5bc6\u7801\ndata={\n    &#039;commit&#039;:&#039;Sign in&#039;,\n    &#039;utf8&#039;:&#039;\u2713&#039;,\n    &#039;authenticity_token&#039;:authenticity_token,\n    &#039;login&#039;:&#039;317828332@qq.com&#039;,\n    &#039;password&#039;:&#039;alex3714&#039;\n}\nr2=requests.post(&#039;https:\/\/github.com\/session&#039;,\n             data=data,\n             cookies=r1_cookie\n             )\n\nlogin_cookie=r2.cookies.get_dict()\n\n#\u7b2c\u4e09\u6b21\u8bf7\u6c42\uff1a\u4ee5\u540e\u7684\u767b\u5f55\uff0c\u62ff\u7740login_cookie\u5c31\u53ef\u4ee5,\u6bd4\u5982\u8bbf\u95ee\u4e00\u4e9b\u4e2a\u4eba\u914d\u7f6e\nr3=requests.get(&#039;https:\/\/github.com\/settings\/emails&#039;,\n                cookies=login_cookie)\n\nprint(&#039;317828332@qq.com&#039; in r3.text) #True<\/code><\/pre>\n<p><strong>requests.session()\u81ea\u52a8\u5e2e\u6211\u4eec\u4fdd\u5b58cookie\u4fe1\u606f<\/strong><\/p>\n<pre><code>import requests\nimport re\n\nsession=requests.session()\n#\u7b2c\u4e00\u6b21\u8bf7\u6c42\nr1=session.get(&#039;https:\/\/github.com\/login&#039;)\nauthenticity_token=re.findall(r&#039;name=&quot;authenticity_token&quot;.*?value=&quot;(.*?)&quot;&#039;,r1.text)[0] #\u4ece\u9875\u9762\u4e2d\u62ff\u5230CSRF TOKEN\n\n#\u7b2c\u4e8c\u6b21\u8bf7\u6c42\ndata={\n    &#039;commit&#039;:&#039;Sign in&#039;,\n    &#039;utf8&#039;:&#039;\u2713&#039;,\n    &#039;authenticity_token&#039;:authenticity_token,\n    &#039;login&#039;:&#039;317828332@qq.com&#039;,\n    &#039;password&#039;:&#039;alex3714&#039;\n}\nr2=session.post(&#039;https:\/\/github.com\/session&#039;,\n             data=data,\n             )\n\n#\u7b2c\u4e09\u6b21\u8bf7\u6c42\nr3=session.get(&#039;https:\/\/github.com\/settings\/emails&#039;)\n\nprint(&#039;317828332@qq.com&#039; in r3.text) #True<\/code><\/pre>\n<h2>3\u3001\u8865\u5145<\/h2>\n<pre><code>requests.post(url=&#039;xxxxxxxx&#039;,\n              data={&#039;xxx&#039;:&#039;yyy&#039;}) #\u6ca1\u6709\u6307\u5b9a\u8bf7\u6c42\u5934,#\u9ed8\u8ba4\u7684\u8bf7\u6c42\u5934:application\/x-www-form-urlencoed\n\n#\u5982\u679c\u6211\u4eec\u81ea\u5b9a\u4e49\u8bf7\u6c42\u5934\u662fapplication\/json,\u5e76\u4e14\u7528data\u4f20\u503c, \u5219\u670d\u52a1\u7aef\u53d6\u4e0d\u5230\u503c\nrequests.post(url=&#039;&#039;,\n              data={&#039;&#039;:1,},\n              headers={\n                  &#039;content-type&#039;:&#039;application\/json&#039;\n              })\n\nrequests.post(url=&#039;&#039;,\n              json={&#039;&#039;:1,},\n              ) #\u9ed8\u8ba4\u7684\u8bf7\u6c42\u5934:application\/json<\/code><\/pre>\n<h1>\u56db \u54cd\u5e94Response<\/h1>\n<h2>1\u3001response\u5c5e\u6027<\/h2>\n<pre><code>import requests\nrespone=requests.get(&#039;http:\/\/www.jianshu.com&#039;)\n# respone\u5c5e\u6027\nprint(respone.text)\nprint(respone.content)\n\nprint(respone.status_code)\nprint(respone.headers)\nprint(respone.cookies)\nprint(respone.cookies.get_dict())\nprint(respone.cookies.items())\n\nprint(respone.url)\nprint(respone.history)\n\nprint(respone.encoding)\n\n#\u5173\u95ed\uff1aresponse.close()\nfrom contextlib import closing\nwith closing(requests.get(&#039;xxx&#039;,stream=True)) as response:\n    for line in response.iter_content():\n    pass<\/code><\/pre>\n<h2>2\u3001\u7f16\u7801\u95ee\u9898<\/h2>\n<pre><code>#\u7f16\u7801\u95ee\u9898\nimport requests\nresponse=requests.get(&#039;http:\/\/www.autohome.com\/news&#039;)\n# response.encoding=&#039;gbk&#039; #\u6c7d\u8f66\u4e4b\u5bb6\u7f51\u7ad9\u8fd4\u56de\u7684\u9875\u9762\u5185\u5bb9\u4e3agb2312\u7f16\u7801\u7684\uff0c\u800crequests\u7684\u9ed8\u8ba4\u7f16\u7801\u4e3aISO-8859-1\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\u6210gbk\u5219\u4e2d\u6587\u4e71\u7801\nprint(response.text)<\/code><\/pre>\n<h2>3\u3001\u83b7\u53d6\u4e8c\u8fdb\u5236\u6570\u636e<\/h2>\n<pre><code>import requests\n\nresponse=requests.get(&#039;https:\/\/timgsa.baidu.com\/timg?image&amp;quality=80&amp;size=b9999_10000&amp;sec=1509868306530&amp;di=712e4ef3ab258b36e9f4b48e85a81c9d&amp;imgtype=0&amp;src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F11385343fbf2b211e1fb58a1c08065380dd78e0c.jpg&#039;)\n\nwith open(&#039;a.jpg&#039;,&#039;wb&#039;) as f:\n    f.write(response.content)\n<\/code><\/pre>\n<p><strong>\u83b7\u53d6\u4e8c\u8fdb\u5236\u6d41<\/strong><\/p>\n<pre><code>#stream\u53c2\u6570:\u4e00\u70b9\u4e00\u70b9\u7684\u53d6,\u6bd4\u5982\u4e0b\u8f7d\u89c6\u9891\u65f6,\u5982\u679c\u89c6\u9891100G,\u7528response.content\u7136\u540e\u4e00\u4e0b\u5b50\u5199\u5230\u6587\u4ef6\u4e2d\u662f\u4e0d\u5408\u7406\u7684\n\nimport requests\n\nresponse=requests.get(&#039;https:\/\/gss3.baidu.com\/6LZ0ej3k1Qd3ote6lo7D0j9wehsv\/tieba-smallvideo-transcode\/1767502_56ec685f9c7ec542eeaf6eac93a65dc7_6fe25cd1347c_3.mp4&#039;,\n                      stream=True)\n\nwith open(&#039;b.mp4&#039;,&#039;wb&#039;) as f:\n    for line in response.iter_content():\n        f.write(line)\n<\/code><\/pre>\n<h2>4\u3001\u89e3\u6790json<\/h2>\n<pre><code>#\u89e3\u6790json\nimport requests\nresponse=requests.get(&#039;http:\/\/httpbin.org\/get&#039;)\n\nimport json\nres1=json.loads(response.text) #\u592a\u9ebb\u70e6\n\nres2=response.json() #\u76f4\u63a5\u83b7\u53d6json\u6570\u636e\n\nprint(res1 == res2) #True<\/code><\/pre>\n<h2>5\u3001Redirection and History<\/h2>\n<p><strong>\u5148\u770b\u5b98\u7f51\u7684\u89e3\u91ca<\/strong><\/p>\n<pre><code>By default Requests will perform location redirection for all verbs except HEAD.\n\nWe can use the history property of the Response object to track redirection.\n\nThe Response.history list contains the Response objects that were created in order to complete the request. The list is sorted from the oldest to the most recent response.\n\nFor example, GitHub redirects all HTTP requests to HTTPS:\n\n>&gt;&gt; r = requests.get(&#039;http:\/\/github.com&#039;)\n\n>&gt;&gt; r.url\n&#039;https:\/\/github.com\/&#039;\n\n>&gt;&gt; r.status_code\n200\n\n>&gt;&gt; r.history\n[&lt;Response [301]&gt;]\nIf you&#039;re using GET, OPTIONS, POST, PUT, PATCH or DELETE, you can disable redirection handling with the allow_redirects parameter:\n\n>&gt;&gt; r = requests.get(&#039;http:\/\/github.com&#039;, allow_redirects=False)\n\n>&gt;&gt; r.status_code\n301\n\n>&gt;&gt; r.history\n[]\nIf you&#039;re using HEAD, you can enable redirection as well:\n\n>&gt;&gt; r = requests.head(&#039;http:\/\/github.com&#039;, allow_redirects=True)\n\n>&gt;&gt; r.url\n&#039;https:\/\/github.com\/&#039;\n\n>&gt;&gt; r.history\n[&lt;Response [301]&gt;]<\/code><\/pre>\n<p><strong>\u5229\u7528github\u767b\u5f55\u540e\u8df3\u8f6c\u5230\u4e3b\u9875\u9762\u7684\u4f8b\u5b50\u6765\u9a8c\u8bc1\u5b83<\/strong><\/p>\n<pre><code>import requests\nimport re\n\n#\u7b2c\u4e00\u6b21\u8bf7\u6c42\nr1=requests.get(&#039;https:\/\/github.com\/login&#039;)\nr1_cookie=r1.cookies.get_dict() #\u62ff\u5230\u521d\u59cbcookie(\u672a\u88ab\u6388\u6743)\nauthenticity_token=re.findall(r&#039;name=&quot;authenticity_token&quot;.*?value=&quot;(.*?)&quot;&#039;,r1.text)[0] #\u4ece\u9875\u9762\u4e2d\u62ff\u5230CSRF TOKEN\n\n#\u7b2c\u4e8c\u6b21\u8bf7\u6c42\uff1a\u5e26\u7740\u521d\u59cbcookie\u548cTOKEN\u53d1\u9001POST\u8bf7\u6c42\u7ed9\u767b\u5f55\u9875\u9762\uff0c\u5e26\u4e0a\u8d26\u53f7\u5bc6\u7801\ndata={\n    &#039;commit&#039;:&#039;Sign in&#039;,\n    &#039;utf8&#039;:&#039;\u2713&#039;,\n    &#039;authenticity_token&#039;:authenticity_token,\n    &#039;login&#039;:&#039;317828332@qq.com&#039;,\n    &#039;password&#039;:&#039;alex3714&#039;\n}\n\n#\u6d4b\u8bd5\u4e00\uff1a\u6ca1\u6709\u6307\u5b9aallow_redirects=False,\u5219\u54cd\u5e94\u5934\u4e2d\u51fa\u73b0Location\u5c31\u8df3\u8f6c\u5230\u65b0\u9875\u9762\uff0cr2\u4ee3\u8868\u65b0\u9875\u9762\u7684response\nr2=requests.post(&#039;https:\/\/github.com\/session&#039;,\n             data=data,\n             cookies=r1_cookie\n             )\n\nprint(r2.status_code) #200\nprint(r2.url) #\u770b\u5230\u7684\u662f\u8df3\u8f6c\u540e\u7684\u9875\u9762\nprint(r2.history) #\u770b\u5230\u7684\u662f\u8df3\u8f6c\u524d\u7684response\nprint(r2.history[0].text) #\u770b\u5230\u7684\u662f\u8df3\u8f6c\u524d\u7684response.text\n\n#\u6d4b\u8bd5\u4e8c\uff1a\u6307\u5b9aallow_redirects=False,\u5219\u54cd\u5e94\u5934\u4e2d\u5373\u4fbf\u51fa\u73b0Location\u4e5f\u4e0d\u4f1a\u8df3\u8f6c\u5230\u65b0\u9875\u9762\uff0cr2\u4ee3\u8868\u7684\u4ecd\u7136\u662f\u8001\u9875\u9762\u7684response\nr2=requests.post(&#039;https:\/\/github.com\/session&#039;,\n             data=data,\n             cookies=r1_cookie,\n             allow_redirects=False\n             )\n\nprint(r2.status_code) #302\nprint(r2.url) #\u770b\u5230\u7684\u662f\u8df3\u8f6c\u524d\u7684\u9875\u9762https:\/\/github.com\/session\nprint(r2.history) #[]<\/code><\/pre>\n<h1>\u4e94 \u9ad8\u7ea7\u7528\u6cd5<\/h1>\n<h2>1\u3001SSL Cert Verification<\/h2>\n<pre><code>#\u8bc1\u4e66\u9a8c\u8bc1(\u5927\u90e8\u5206\u7f51\u7ad9\u90fd\u662fhttps)\nimport requests\nrespone=requests.get(&#039;https:\/\/www.12306.cn&#039;) #\u5982\u679c\u662fssl\u8bf7\u6c42,\u9996\u5148\u68c0\u67e5\u8bc1\u4e66\u662f\u5426\u5408\u6cd5,\u4e0d\u5408\u6cd5\u5219\u62a5\u9519,\u7a0b\u5e8f\u7ec8\u7aef\n\n#\u6539\u8fdb1:\u53bb\u6389\u62a5\u9519,\u4f46\u662f\u4f1a\u62a5\u8b66\u544a\nimport requests\nrespone=requests.get(&#039;https:\/\/www.12306.cn&#039;,verify=False) #\u4e0d\u9a8c\u8bc1\u8bc1\u4e66,\u62a5\u8b66\u544a,\u8fd4\u56de200\nprint(respone.status_code)\n\n#\u6539\u8fdb2:\u53bb\u6389\u62a5\u9519,\u5e76\u4e14\u53bb\u6389\u8b66\u62a5\u4fe1\u606f\nimport requests\nfrom requests.packages import urllib3\nurllib3.disable_warnings() #\u5173\u95ed\u8b66\u544a\nrespone=requests.get(&#039;https:\/\/www.12306.cn&#039;,verify=False)\nprint(respone.status_code)\n\n#\u6539\u8fdb3:\u52a0\u4e0a\u8bc1\u4e66\n#\u5f88\u591a\u7f51\u7ad9\u90fd\u662fhttps,\u4f46\u662f\u4e0d\u7528\u8bc1\u4e66\u4e5f\u53ef\u4ee5\u8bbf\u95ee,\u5927\u591a\u6570\u60c5\u51b5\u90fd\u662f\u53ef\u4ee5\u643a\u5e26\u4e5f\u53ef\u4ee5\u4e0d\u643a\u5e26\u8bc1\u4e66\n#\u77e5\u4e4e\\\u767e\u5ea6\u7b49\u90fd\u662f\u53ef\u5e26\u53ef\u4e0d\u5e26\n#\u6709\u786c\u6027\u8981\u6c42\u7684,\u5219\u5fc5\u987b\u5e26\uff0c\u6bd4\u5982\u5bf9\u4e8e\u5b9a\u5411\u7684\u7528\u6237,\u62ff\u5230\u8bc1\u4e66\u540e\u624d\u6709\u6743\u9650\u8bbf\u95ee\u67d0\u4e2a\u7279\u5b9a\u7f51\u7ad9\nimport requests\nrespone=requests.get(&#039;https:\/\/www.12306.cn&#039;,\n                     cert=(&#039;\/path\/server.crt&#039;,\n                           &#039;\/path\/key&#039;))\nprint(respone.status_code)<\/code><\/pre>\n<h2>2\u3001\u4f7f\u7528\u4ee3\u7406<\/h2>\n<pre><code>#\u5b98\u7f51\u94fe\u63a5: http:\/\/docs.python-requests.org\/en\/master\/user\/advanced\/#proxies\n\n#\u4ee3\u7406\u8bbe\u7f6e:\u5148\u53d1\u9001\u8bf7\u6c42\u7ed9\u4ee3\u7406,\u7136\u540e\u7531\u4ee3\u7406\u5e2e\u5fd9\u53d1\u9001(\u5c01ip\u662f\u5e38\u89c1\u7684\u4e8b\u60c5)\nimport requests\nproxies={\n    &#039;http&#039;:&#039;http:\/\/egon:123@localhost:9743&#039;,#\u5e26\u7528\u6237\u540d\u5bc6\u7801\u7684\u4ee3\u7406,@\u7b26\u53f7\u524d\u662f\u7528\u6237\u540d\u4e0e\u5bc6\u7801\n    &#039;http&#039;:&#039;http:\/\/localhost:9743&#039;,\n    &#039;https&#039;:&#039;https:\/\/localhost:9743&#039;,\n}\nrespone=requests.get(&#039;https:\/\/www.12306.cn&#039;,\n                     proxies=proxies)\n\nprint(respone.status_code)\n\n#\u652f\u6301socks\u4ee3\u7406,\u5b89\u88c5:pip install requests[socks]\nimport requests\nproxies = {\n    &#039;http&#039;: &#039;socks5:\/\/user:pass@host:port&#039;,\n    &#039;https&#039;: &#039;socks5:\/\/user:pass@host:port&#039;\n}\nrespone=requests.get(&#039;https:\/\/www.12306.cn&#039;,\n                     proxies=proxies)\n\nprint(respone.status_code)<\/code><\/pre>\n<h2>3\u3001\u8d85\u65f6\u8bbe\u7f6e<\/h2>\n<pre><code>#\u8d85\u65f6\u8bbe\u7f6e\n#\u4e24\u79cd\u8d85\u65f6:float or tuple\n#timeout=0.1 #\u4ee3\u8868\u63a5\u6536\u6570\u636e\u7684\u8d85\u65f6\u65f6\u95f4\n#timeout=(0.1,0.2)#0.1\u4ee3\u8868\u94fe\u63a5\u8d85\u65f6  0.2\u4ee3\u8868\u63a5\u6536\u6570\u636e\u7684\u8d85\u65f6\u65f6\u95f4\n\nimport requests\nrespone=requests.get(&#039;https:\/\/www.baidu.com&#039;,\n                     timeout=0.0001)<\/code><\/pre>\n<h2>4\u3001 \u8ba4\u8bc1\u8bbe\u7f6e<\/h2>\n<pre><code>#\u5b98\u7f51\u94fe\u63a5\uff1ahttp:\/\/docs.python-requests.org\/en\/master\/user\/authentication\/\n\n#\u8ba4\u8bc1\u8bbe\u7f6e:\u767b\u9646\u7f51\u7ad9\u662f,\u5f39\u51fa\u4e00\u4e2a\u6846,\u8981\u6c42\u4f60\u8f93\u5165\u7528\u6237\u540d\u5bc6\u7801\uff08\u4e0ealter\u5f88\u7c7b\u4f3c\uff09\uff0c\u6b64\u65f6\u662f\u65e0\u6cd5\u83b7\u53d6html\u7684\n# \u4f46\u672c\u8d28\u539f\u7406\u662f\u62fc\u63a5\u6210\u8bf7\u6c42\u5934\u53d1\u9001\n#         r.headers[&#039;Authorization&#039;] = _basic_auth_str(self.username, self.password)\n# \u4e00\u822c\u7684\u7f51\u7ad9\u90fd\u4e0d\u7528\u9ed8\u8ba4\u7684\u52a0\u5bc6\u65b9\u5f0f\uff0c\u90fd\u662f\u81ea\u5df1\u5199\n# \u90a3\u4e48\u6211\u4eec\u5c31\u9700\u8981\u6309\u7167\u7f51\u7ad9\u7684\u52a0\u5bc6\u65b9\u5f0f\uff0c\u81ea\u5df1\u5199\u4e00\u4e2a\u7c7b\u4f3c\u4e8e_basic_auth_str\u7684\u65b9\u6cd5\n# \u5f97\u5230\u52a0\u5bc6\u5b57\u7b26\u4e32\u540e\u6dfb\u52a0\u5230\u8bf7\u6c42\u5934\n#         r.headers[&#039;Authorization&#039;] =func(&#039;.....&#039;)\n\n#\u770b\u4e00\u770b\u9ed8\u8ba4\u7684\u52a0\u5bc6\u65b9\u5f0f\u5427\uff0c\u901a\u5e38\u7f51\u7ad9\u90fd\u4e0d\u4f1a\u7528\u9ed8\u8ba4\u7684\u52a0\u5bc6\u8bbe\u7f6e\nimport requests\nfrom requests.auth import HTTPBasicAuth\nr=requests.get(&#039;xxx&#039;,auth=HTTPBasicAuth(&#039;user&#039;,&#039;password&#039;))\nprint(r.status_code)\n\n#HTTPBasicAuth\u53ef\u4ee5\u7b80\u5199\u4e3a\u5982\u4e0b\u683c\u5f0f\nimport requests\nr=requests.get(&#039;xxx&#039;,auth=(&#039;user&#039;,&#039;password&#039;))\nprint(r.status_code)<\/code><\/pre>\n<h2>5\u3001\u5f02\u5e38\u5904\u7406<\/h2>\n<pre><code>#\u5f02\u5e38\u5904\u7406\nimport requests\nfrom requests.exceptions import * #\u53ef\u4ee5\u67e5\u770brequests.exceptions\u83b7\u53d6\u5f02\u5e38\u7c7b\u578b\n\ntry:\n    r=requests.get(&#039;http:\/\/www.baidu.com&#039;,timeout=0.00001)\nexcept ReadTimeout:\n    print(&#039;===:&#039;)\n# except ConnectionError: #\u7f51\u7edc\u4e0d\u901a\n#     print(&#039;-----&#039;)\n# except Timeout:\n#     print(&#039;aaaaa&#039;)\n\nexcept RequestException:\n    print(&#039;Error&#039;)<\/code><\/pre>\n<h2>6\u3001\u4e0a\u4f20\u6587\u4ef6<\/h2>\n<pre><code>import requests\nfiles={&#039;file&#039;:open(&#039;a.jpg&#039;,&#039;rb&#039;)}\nrespone=requests.post(&#039;http:\/\/httpbin.org\/post&#039;,files=files)\nprint(respone.status_code)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00 \u4ecb\u7ecd #\u4ecb\u7ecd\uff1a\u4f7f\u7528requests\u53ef\u4ee5\u6a21\u62df\u6d4f\u89c8\u5668\u7684\u8bf7\u6c42\uff0c\u6bd4\u8d77\u4e4b\u524d\u7528\u5230\u7684urllib\uff0crequests\u6a21\u5757\u7684 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[342,349],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/4560"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4560"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/4560\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}