python3中的urlopen對於中文url是如何處理的?

時間 2021-05-11 12:59:51

1樓:千面君

說說http協議中的編碼和解碼 - wangfengpaopao - 部落格園

HTTP協議中的編碼和解碼URL的編碼和解碼

2樓:JinxKc

python3中除了 urllib.parse.quote()

你還要fromurllibimportparse

要不parse會爆AttributeError: module 'urllib' has no attribute 'parse'

3樓:

from

urllib.parse

import

quote

import

string

url=

r'http://baike.baidu.com/item/人民的名義/17545218'

url=

quote

(url

,safe

=string

.printable

)# safe表示可以忽略的字元

print

(url)

4樓:

HTTP 是 ASCII 編碼協議,因此我們需要把中文進行轉換,然後才能正確傳送到網路中:

("中國")

5樓:

剛剛看了urllib.parse.quote()的定義,完全可以直接處理中英混排的url,無需單獨處理中文再拼接。具體方法:

# -*- coding:utf-8 -*-

from

urllib.parse

import

quote

url=

'http://www.example.com/api.php?text=中文在這裡'

# 不帶附加引數

print('

\n不帶附加引數:

\n%s'%

quote

(url

))# 附帶不轉換字元引數

print('

\n附加不轉換字元引數:

\n%s'%

quote

(url

,safe

='/:?='

))執行結果:

不帶附加引數:

附加不轉換字元引數:

quote可用的引數如下:

quote(string, safe='/', encoding=None, errors=None)

其中的safe引數可用的範圍:

reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","

這樣對於爬取來的混合中文的url可以直接處理了。

6樓:靈劍

url當中不可能有中文,因為url可以使用的字元有限制,所有其他字元都應該使用url編碼,你應該先把中文編碼成%XX這樣的形式再拼起來

7樓:孫曉飛

今天我剛剛解決了這個問題。

首先,url中的中文要單獨處理,不能中英文全部合在一起處理(因為一部分的特殊字元也會被處理掉)。其次。在python3.

0+中,已經不支援之前的urllib.quote了,而是需要urllib.parse.

quote(str)

一種可行的方案

import urllib

s=『中文』

s=urllib.parse.quote(s)url='some english url character %s'%(s)

urllib.request.urlopen(url)祝你好運

python3中賦值問題?

依雲 因為乙個被賦值的物件是名字,另乙個是物件的資料。名字變更不影響物件本身 只影響你引用它的方法 而物件的資料變更當然會影響到那個物件,而不管那個物件有幾個名字,你又是通過哪個名字找到它的。再說一遍,這個和物件可變不可變沒任何關係。你嘗試修改可變物件的資料,結果會是成功的。如果你把 dict 換成...

Python3中,eval input 和float input 有什麼區別?

這個問題首先弄清楚eval.eval 是 Built in Function.在 2.Built in Functions 可找到關於eval的用法 動態執行語句 eval expression globals locals 同時也支援以檔案的形式執行 execfile 函式 eval常用於 lis...

Python3中如何得到Unicode碼對應的中文?

少兒創客幫 土羊感謝 import codecs import random def random char char code random.randint 0x4e00,0x9fbb str u format format char code,x char codecs.decode str,u...