天天看點

Python3 urllib.parse 常用函數示例

1、擷取url參數。

<code>&gt;&gt;&gt; </code><code>from</code> <code>urllib </code><code>import</code> <code>parse</code>

<code>&gt;&gt;&gt; url </code><code>=</code> <code>r</code><code>'https://docs.python.org/3.5/search.html?q=parse&amp;check_keywords=yes&amp;area=default'</code>

<code>&gt;&gt;&gt; parseResult </code><code>=</code> <code>parse.urlparse(url)</code>

<code>&gt;&gt;&gt; parseResult</code>

<code>ParseResult(scheme</code><code>=</code><code>'https'</code><code>, netloc</code><code>=</code><code>'docs.python.org'</code><code>, path</code><code>=</code><code>'/3.5/search.html'</code><code>, params</code><code>=</code><code>'</code><code>', query='</code><code>q</code><code>=</code><code>parse&amp;check_keywords</code><code>=</code><code>yes&amp;area</code><code>=</code><code>default</code><code>', fragment='</code><code>')</code>

<code>&gt;&gt;&gt; param_dict </code><code>=</code> <code>parse.parse_qs(parseResult.query)</code>

<code>&gt;&gt;&gt; param_dict</code>

<code>{</code><code>'q'</code><code>: [</code><code>'parse'</code><code>], </code><code>'check_keywords'</code><code>: [</code><code>'yes'</code><code>], </code><code>'area'</code><code>: [</code><code>'default'</code><code>]}</code>

<code>&gt;&gt;&gt; q </code><code>=</code> <code>param_dict[</code><code>'q'</code><code>][</code><code>0</code><code>]</code>

<code>&gt;&gt;&gt; q</code>

<code>'parse'</code>

<code>#注意:加号會被解碼,可能有時并不是我們想要的</code>

<code>&gt;&gt;&gt; parse.parse_qs(</code><code>'proxy=183.222.102.178:8080&amp;task=XXXXX|5-3+2'</code><code>)</code>

<code>{</code><code>'proxy'</code><code>: [</code><code>'183.222.102.178:8080'</code><code>], </code><code>'task'</code><code>: [</code><code>'XXXXX|5-3 2'</code><code>]}</code>

<code>&gt;&gt;&gt; parse.parse_qs(</code><code>'action=addblog&amp;job=modify&amp;tid=1766670'</code><code>)</code>

<code>{</code><code>'tid'</code><code>: [</code><code>'1766670'</code><code>], </code><code>'action'</code><code>: [</code><code>'addblog'</code><code>], </code><code>'job'</code><code>: [</code><code>'modify'</code><code>]} </code><code>#注意和第三個并不一樣</code>

<code>&gt;&gt;&gt; parse.parse_qsl(</code><code>'action=addblog&amp;job=modify&amp;tid=1766670'</code><code>)</code>

<code>[(</code><code>'action'</code><code>, </code><code>'addblog'</code><code>), (</code><code>'job'</code><code>, </code><code>'modify'</code><code>), (</code><code>'tid'</code><code>, </code><code>'1766670'</code><code>)]</code>

<code>&gt;&gt;&gt; </code><code>dict</code><code>(parse.parse_qsl(</code><code>'action=addblog&amp;job=modify&amp;tid=1766670'</code><code>)) </code><code>#注意和第一個并不一樣</code>

<code>{</code><code>'tid'</code><code>: </code><code>'1766670'</code><code>, </code><code>'action'</code><code>: </code><code>'addblog'</code><code>, </code><code>'job'</code><code>: </code><code>'modify'</code><code>}</code>

<code>&gt;&gt;&gt; query </code><code>=</code> <code>{</code>

<code>    </code><code>'name'</code><code>: </code><code>'walker'</code><code>,</code>

<code>    </code><code>'age'</code><code>: </code><code>99</code><code>,</code>

<code>    </code><code>}</code>

<code>&gt;&gt;&gt; parse.urlencode(query)</code>

<code>'name=walker&amp;age=99'</code>

<code>&gt;&gt;&gt; parse.quote(</code><code>'a&amp;b/c'</code><code>)    </code><code>#未編碼斜線</code>

<code>'a%26b/c'</code>

<code>&gt;&gt;&gt; parse.quote_plus(</code><code>'a&amp;b/c'</code><code>)    </code><code>#編碼了斜線</code>

<code>'a%26b%2Fc'</code>

<code>from</code> <code>urllib </code><code>import</code> <code>parse</code>

<code>&gt;&gt;&gt; parse.unquote(</code><code>'1+2'</code><code>)    </code><code>#不解碼加号</code>

<code>'1+2'</code>

<code>&gt;&gt;&gt; parse.unquote(</code><code>'1+2'</code><code>)    </code><code>#把加号解碼為空格</code>

<code>'1 2'</code>

  如果你還想問為什麼沒有urldecode——再把示例1看五遍。^_^

相關閱讀:

本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1766670如需轉載請自行聯系原作者

RQSLT