使用Python URLPRASE解析URL
这适用于Python2.7,但不适用于3.5 我正在尝试拆分url的参数,然后用一个新值(md5哈希)更改其中一个参数 机器就这样坏了使用Python URLPRASE解析URL,python,Python,这适用于Python2.7,但不适用于3.5 我正在尝试拆分url的参数,然后用一个新值(md5哈希)更改其中一个参数 机器就这样坏了 ParseResult(scheme='http', netloc='example.com', path='/dynamic', params='', query='t=MD5-YOUR-OAUTH-TOKEN&p=11111111', fragment='') newString = 'http://example.com/dynamic?t='+
ParseResult(scheme='http', netloc='example.com', path='/dynamic', params='', query='t=MD5-YOUR-OAUTH-TOKEN&p=11111111', fragment='')
newString = 'http://example.com/dynamic?t='+tokenHashed+'&p=11112311312'
import requests, json, hashlib
import urllib
from urllib.parse import urlparse
from xml.etree import ElementTree
product_url = item.find('product_url').text
parsed = urlparse(product_url)
qs = urlparse.parse.parse_qs(parsed.query)
qs['t'] = [tokenHashed]
newqs = urllib.urlencode(qs, doseq=1)
newurl = urlparse.urlunparse([newqs if i == 4 else x for i,x in enumerate(parsed)])
print(newurl)
新的url应该是这样的
ParseResult(scheme='http', netloc='example.com', path='/dynamic', params='', query='t=MD5-YOUR-OAUTH-TOKEN&p=11111111', fragment='')
newString = 'http://example.com/dynamic?t='+tokenHashed+'&p=11112311312'
import requests, json, hashlib
import urllib
from urllib.parse import urlparse
from xml.etree import ElementTree
product_url = item.find('product_url').text
parsed = urlparse(product_url)
qs = urlparse.parse.parse_qs(parsed.query)
qs['t'] = [tokenHashed]
newqs = urllib.urlencode(qs, doseq=1)
newurl = urlparse.urlunparse([newqs if i == 4 else x for i,x in enumerate(parsed)])
print(newurl)
我得到这个错误
'function' object has no attribute 'parse'
全堆栈跟踪
Environment:
Request Method: POST
Request URL: http://localhost:8000/serviceapp/example/
Django Version: 1.8.8
Python Version: 3.5.1
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tastypie',
'haystack',
'serviceapp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/Applications/AMPPS/www/djang-rest/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Applications/AMPPS/www/djang-rest/restapi/serviceapp/views.py" in example
20. getProdcuts(advertiserName)
File "/Applications/AMPPS/www/djang-rest/restapi/serviceapp/views.py" in getProdcuts
42. qs = urlparse.parse.parse_qs(parsed.query)
Exception Type: AttributeError at /serviceapp/example/
Exception Value: 'function' object has no attribute 'parse'
这是我的python版本的问题吗?使用URLPRASE导入URLPRASE的
。或者,如果要保存与python 2的兼容性:
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
更新:
我没有注意。尝试更改qs=urlparse.parse.parse_qs(parsed.query)
上的qs=urllib.parse.parse_qs(parsed.query)
有同样的问题,这对我来说很有效:
from urllib.parse import urlparse
from urllib.parse import parse_qs
product_url = item.find('product_url').text
parsed = urlparse(product_url)
qs = parse_qs(parsed.query)
他们把它放在了页面的顶部