2011-12-17 4 views
0

안녕하세요 여러분, 구글에서 URL을 얻으려고 노력했습니다.구글에서 결과를 디코드

하지만 문제는 내가 인코딩 된 URL을 가지고 있습니다! 이런!

`[u'http://www.motorrad-live.de/test.php%3Fid%3D11', u'http://www.autogaleria.pl/ 
auto_test/test.php%3Fid%3D37', u'http://oculus.ru/test.php%3Fid%3D2', u'http://o 
culus.ru/test.php%3Fid%3D1', u'http://www.kerrytaylorauctions.com/detail-test.ph 
p%3Fid%3D3432', u'http://radio.ghanaweb.com/live-radio.test.php?id=3D4', u'http: 
//www.studygerman.ru/test/test.php%3Fid%3D261', u'http://www.mhealth.ru/tests/te 
st.php%3Fid%3D300'] 

당신이 볼로 .php 후 무언가가 인코딩!

여기 내 코드는 내 코드 콘텐츠 부분을 디코딩하는 데 사용됩니다.

import json 
import urllib 


def print_results(results): 
    mylist=[] 
    n=[] 
    for r in results: 
     mylist.append(r['url']) 
    for each in mylist: 
     n.append(each.replace(u"%3FID%","?id=")) 
    print n 


def query(qs): 
    f = urllib.urlopen('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&gl=de&q=%s&rsz=8&start=7'%qs) 
    s = f.read() 
    j = json.loads(s) 

    return j['responseData']['results'] 
a=query('inurl:"test.php?id"') 
print_results(a) 

답변

3

당신이 함수 맺다 검색하는 :

urllib.unquote(url) 
+0

덕분에 반환 된 JSON을 reformating에 매우 유용 http://jsbeautifier.org/ –

0

먼저 당신이 그것을 보간하기 전에 쿼리 문자열을 인용해야합니다

>>> urllib.quote("inurl:\"test.php?id\"") 
'inurl%3A%22test.php%3Fid%22' 

>>> "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&gl=de&q=%(q)s&rsz=8&start=0" % dict(q=urllib.quote("inurl:\"test.php?id\"")) 
'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&gl=de&q=inurl%3A%22test.php%3Fid%22&rsz=8&start=0' 

초 i는 반환 된 JSON 쳐다 보면서 인코딩되지 않은 URL이 unescapedUrl 키 아래에 저장되어 있으므로 print_results(results)을 다음으로 대체 할 수 있습니다.

당신이 정말로 url 키를 사용에서 읽을 필요가 있다면
def print_results(results): 
    L=list(r['unescapedUrl'] for r in results) 
    print L 

는 :

def print_results(results): 
    L=list(urllib.unquote(r['url']) for r in results) 
    print L 
+0

메모를 maaaaaaaaaaaaaaaaaaaaaaaaan. –