如何使用urlopen进行动态查询字符串

时间:2018-06-14 07:50:31

标签: python pysolr

我正在使用python和solr并通过url将数据从solr加载到python:

connection = urlopen('http://localhost:8983/solr/data/select?indent=on&q=sender_name:*AX*%20AND%20message:*Avail%20Lmt&rows=211&start=0&wt=json')

如果我必须使用函数在不同形式的查询参数中传递不同的参数。我们如何传递,因为此查询是solr

sender_name:*SDI* - message:*Take this* (rows = 213 start=0)
sender_name:*TRY* - message:*Look Up*   (rows =300 start=0)

1 个答案:

答案 0 :(得分:0)

通常,这可以通过将所有参数保存在字典中然后使用urllib.parse.urlencode()将其转换为合适的URL来完成。例如:

.targets

这会给你:

packages.config

import urllib sender_name = '*AX*' message = '*Avail Lmt' parms = {'q' : f'sender_name:{sender_name} - message:{message}', 'rows' : 213, 'start' : 0} url = 'http://localhost:8983/solr/data/select?indent=on&' + urllib.parse.urlencode(parms, quote_via=urllib.parse.quote, safe='*:') print(url) 用于为空格而不是http://localhost:8983/solr/data/select?indent=on&q=sender_name:*AX*%20-%20message:*Avail%20Lmt&rows=213&start=0 提供urllib.parse.quote()