중화사전망 - 서예자전 - 파이썬에서 URL 코딩 문제를 해결하는 방법

파이썬에서 URL 코딩 문제를 해결하는 방법

최근 js 코드에서 생성된 일부 동적 데이터를 캡처하려면 필요한 데이터를 얻기 위해 js 요청을 시뮬레이션해야 합니다. Url 인코딩 및 디코딩 문제가 발생할 때 발생한 문제를 요약합니다. 총결해야만 진보할 수 있고, 비로소 배운 지식을 더욱 분명하게 할 수 있다. Python 은 URL 을 인코딩하고 디코딩하는 편리한 인터페이스를 제공합니다.

Url 의 질의에 URL 의 예약어가 아닌 특수 문자가 있는 경우 인코딩해야 합니다. Url 에 한자가 있을 때, 정확하게 코딩하기 위해서는 특수 처리가 필요하다. 다음은 이 경우에만 해당되며, 물론 영어 전용 문자의 URL 에도 적용됩니다.

(1) URL 인코딩:

Urllib 가져오기

Url = 'wd= 하하'? # 이 사이트의 인코딩이 gbk 인 경우 gbk 에서 유니코드로, 유니코드에서 UTF-8 형식으로 디코딩해야 합니다.

Url = url.decode('gbk',' replace')

Urllib.quote 인쇄 (url.encode ('utf-8',' replace'))

결과: 3a% 2f% 2ftest.com% 2fs% 3fwd% 3d% E5% 93% 88% E5% 93% 88.

(2) URL 디코딩:

Urllib 가져오기

Encoded _ URL = est.com% 2fs% 3fwd% 3d% E5% 93% 88% E5% 93% 88'

Urllib.unquote(encoded_url) 를 인쇄합니다. 디코딩 ('UTF-8',' 대체'). 인코딩 ('gbk',' replace')? # 순서대로

함수 호출의 매개 변수와 결과는 모두 UTF-8 로 인코딩되므로 URL 을 인코딩할 때 매개 변수 문자열의 인코딩을 원래 인코딩에서 UTF-8 로 변환해야 합니다.

Url 을 디코딩할 때 디코딩 결과를 UTF-8 에서 원시 인코딩 형식으로 변환해야 합니다.

웹 사이트에서 사용하는 다른 인코딩, gbk 또는 UTF-8 에 따라 다른 인코딩을 할당하고 다른 URL 변환을 수행합니다. GBK 형식, 한자는 %xx%xx, * * * 두 그룹으로 변환됩니다. Utf-8 형식, 한자는% xx% xx, * * * 세 그룹으로 변환됩니다.

& gt& gt& gt? 수입? Sys, urllib?

-응?

& gt& gt& gt? S? =? 항주?

& gt& gt& gt? Urllib.quote (s.decode (sys.stdin.encoding). 인코딩 ('gbk'))

-응?

%BA%BC%D6%DD?

& gt& gt& gt? Urllib.quote (s.decode (sys.stdin.encoding). 인코딩 ('utf8'))

-응?

%E6%9D%AD%E5%B7%9E'?

[파이썬]? 평원을 구경하다? 복사

대답? =? "멕시코 소녀는 4 년에 4 만 번 유괴되었습니까? 아기가 인질이 되다-소호 뉴스?

인쇄? Urllib.quote(urllib.quote(a))?

두 번의 인코딩 변환 후% 25e5% 25a2% 25a8% 25e8% 25a5% 25bf% 25e5% 2593% 25a5% 25e5% 25a5% 25a5% 25b3% 로 변경됩니다 ................................................................................................................................................................................................................................................................................................................

중국어를 얻으려면 두 번의 디코딩이 필요합니다.

최근 파이썬 (python) 으로 작은 파충류를 썼는데, 자동으로 뭔가를 다운받을 수 있는데, 인터넷 주소에는 중국어가 들어 있는데, 중국어는 gbk 코드인 것 같아요. 그리고 URL 로 변환되는 것 같아요. 예를 들어, "역사적 인물" 이라는 유니코드 문자열이 있다면 Pdf ",웹 사이트로 변환 한 후에는 어떻게 될까요?

T = "%20% E5% 8e% 86% E5% 8f% B2% E4% b8% 8a% e9% 82% a3% E4% ba% 9b% E7

하지만 다른 사이트는 s = "%c0% fa% ca% B7% C9% cf% C4% C7% d0% a9% C5% a3% c8% CB% C3% 를 제시했다 PDF "를 클릭합니다.

& gt& gt& gt 인쇄 urllib.unquote ("%c0% fa% ca% B7% C9% cf% C4% C7% d0% a9% C5%; PDF) 를 참조하십시오. 디코딩 ('gbk'). 인코딩 ("UTF-8")

& gt& gt& gt 역사상 그 소들. 휴대용 문서 형식