python解析URL中含有特殊符号的地址

摘要

今天在用curl调用一个solr地址查询数据的时候报错,发现是因为URL地址中含有[ 中括号 导致的,既然shell的curl命令不行,想着Python的urllib包可以解析URL地址,那就尝试这个

curl 执行报错

错误的情况:

root@pts/3 $ curl "http://192.168.xxx.xxx:8983/solr/core1_shard2_replica1/select?q=*:*&fq=sex:1&fq=activeTime_tdt:[NOW-20MINUTE TO NOW]&wt=json&indent=true"
curl: (3) [globbing] error: bad range specification after pos 96

如果去掉中间包含中括号的查询条件则用curl没有问题

root@pts/3 $ curl "http://192.168.xxx.xxx:8983/solr/core1_shard2_replica1/select?q=*:*&fq=sex:1&wt=json&indent=true"
{
  "responseHeader":{
    "status":0,
    "QTime":8,
    "params":{
      "q":"*:*",
      "indent":"true",
      "fq":"sex:1",
      "wt":"json"}},
      ...

python urllib

这里给出具体的例子

root@pts/3 $ python
Python 2.7.5 (default, Nov 20 2015, 02:00:19)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> urlstr = "http://192.168.xxx.xxx:8983/solr/core1_shard2_replica1/select?q=*:*&fq=sex:1&fq=activeTime_tdt:[NOW-20MINUTE TO NOW]&wt=json&indent=true"
>>> result = urllib.urlopen(urlstr)
>>> print(result)
<addinfourl at 36354168 whose fp = <socket._fileobject object at 0x7f437fe03c50>>
>>> print(result.read())
{
  "responseHeader":{
    "status":0,
    "QTime":11,
    "params":{
      "q":"*:*",
      "indent":"true",
      "fq":["sex:1",
        "activeTime_tdt:[NOW-20MINUTE TO NOW]"],
      "wt":"json"}},

最后可以结合Python的正则表达式来等来实现自己个性化的需求



简书地址:python解析URL中含有特殊符号的地址


    公众号: DailyJobOps    

时间: 2024-09-05 10:15:42

python解析URL中含有特殊符号的地址的相关文章

windows2008 iis7 伪静态URL中带特殊符号空格无法访问的解决办法

windows2008 iis7 伪静态URL中带特殊符号空格无法访问的解决办法 在iis7下,url中包含空格的伪静态,将不能正常访问,比如:http://search.**.cn/product/k-ˮ+

Python解析xml中dom元素的方法_python

本文实例讲述了Python解析xml中dom元素的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: from xml.dom import minidom try:     xmlfile = open("path.xml", "a+")     #xmldoc = minidom.parse( sys.argv[1])     xmldoc = minidom.parse(xmlfile) except :     #updatelogger.

JS 解析url中的中文参数方法

在浏览器中显示的地址是这样的:   但是按F12调试的时候的地址却变化掉了: 这个肯定是是因为浏览器对url路径默认编码了.这个问题是在我们去取值的时候,得到的就是后面那一大串稀奇古怪的东西.得不到我们想要的值.怎么办呢?这里写出来的只是自己的解决方法,也许不能通用,跟大家分享下,有更好的方法,告我一声. //得到url中的值 function request(paras){     var url = location.href;      var paraString = url.subst

php解析url并得到url中的参数及获取url参数的四种方式_php实例

下面一段代码是php解析url并得到url中的参数,代码如下所示: <?php $url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&area=0&author=0&h=0&region=0&s=1&page=1'; $arr = parse_url($url); var_dump($arr); $arr_query = convertU

jQuery选择器中含有空格和特殊符号的注意事项

文章简介:使用jQuery选择器应注意的问题. 一.选择器中含有特殊符号的注意事项 1.选择器中含有"."."#"."("或"]"等特殊字符根据W3C的规定,属性值中是不能含有这些特殊字符的,但在实际项目中偶尔会遇到表达式中含有"#"和"."等特殊字符,如果按照普通的方式去处理出来的话就会出错.解决此类错误的方法是使用转义符转义. <div id="id#b"&

beego小技巧两则:通过命令行自定义端口和环境,url中带有中划线处理

1,通过命令行自定义端口和环境 先用flag提取参数,如果要环境,就反向注进去, 如果是端口,就打到beego.Run函数里去. 2,在作router里的url解析时,如果URL中含有-中划线,用严格的string是不能匹配的. 需要去掉这个string限定. package main import ( "flag" "fmt" _ "prismlogapi/routers" "github.com/astaxie/beego"

JS解析URL及参数

JS解析URL及参数.如下代码: <script language="javascript" type="text/javascript">          var obj;          window.onload = function getargs() {              var args = new Object();              var query = location.search.substring(1); /

[工具类]获取url中参数列表

写在前面 在项目中经常用到解析url中参数的逻辑,今天先下载就自己封装了一个方法,方便以后使用的时候,信手拈来.当然这里给出的方法是针对常见的url参数类型的,对于重写url,或者路由格式的不考虑. c#方法 /// <summary> /// 获取url中参数 /// </summary> /// <param name="url">要解析的url</param> /// <param name="baseUrl&quo

求助,python 解析爬取的网页源码中的json部分

问题描述 求助,python 解析爬取的网页源码中的json部分 爬下来的网页源码有一部分是这样的 : 中间那一部分是json吧?要怎么才能解析成像浏览器那样的好继续抓取所要的信息? 说部分是因为有另外一些是正常的html,就中间这一部分想要的信息就这样两行超级长的延伸...也使用过json.load()来解析,不想显示错误"没有可以解析的json对象". 这两行中还有一部分"}u0026nicku003d${nick}u0026rnu003d${rn}u0026stats.