如何使用python/PHP消除URL链接中的冗余?

2024-10-02 02:37:08 发布

您现在位置:Python中文网/ 问答频道 /正文

许多网站在url链接中添加标签以进行跟踪,例如

http://www.washingtonpost.com/blogs/answer-sheet/post/report-we-still-dont-know-much-about-charter-schools/2012/01/13/gIQAxMIeyP_blog.html?wprss=linkset&tid=sm_twitter_washingtonpost

如果我们切除阑尾“?wprss=linkset&tid=sm_twitter_washingtonpost”,仍将转到同一页面。 有没有什么通用的方法可以消除这些冗余元素?任何评论都会有帮助。在

谢谢!在


Tags: answercomhttpurl网站链接wwwtwitter
3条回答

删除URL中的查询字符串:

<?php
$url = 'http://www.washingtonpost.com/blogs/answer-sheet/post/report-we-still-dont-know-much-about-charter-schools/2012/01/13/gIQAxMIeyP_blog.html?wprss=linkset&tid=sm_twitter_washingtonpost';
$url = explode('?',$url);
$url = $url[0];

//check output
echo $url;
?>

检查URL是否有效:

您可以使用PHP函数get_headers($url)。示例:

^{pr2}$

可以使用正则表达式:

$yourUrl = preg_replace("/[?].*/","",$yourUrl);

意思是:“用一个空字符串替换问号和后面的所有内容”。在

要删除查询,请从URL

在Python中使用^{}

import urlparse

url = urlparse.urlsplit(URL)               # parse url
print urlparse.urlunsplit(url[:3]+('','')) # remove query, fragment parts

或者是一种更轻量级的方法,但它可能不那么通用:

^{pr2}$

根据rfc 3986,可以使用正则表达式解析URI:

/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/

因此,如果没有片段标识符(上面的regex中的最后一部分)或查询组件存在(从第二部分到最后一部分),那么URL.partition('?')[0]应该可以工作,否则将在“?”上拆分一个url会失败,例如

http://example.com/path#here-?-ereh

但是urlparse回答仍然是works。在

检查是否可以通过URL访问页面

在Python中:

import urllib2

try:
    resp = urllib2.urlopen(URL)
except IOError, e:
    print "error: can't open %s, reason: %s" % (URL, e)
else:
    print "success, status code: %s, info:\n%s" % (resp.code, resp.info()),

resp.read()可用于读取页面内容。在

相关问题 更多 >

    热门问题