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

标签 php python html url web

许多网站都会在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”,仍然会转到同一页面。 是否有任何通用方法可以消除这些冗余元素?任何评论都会有帮助。

谢谢!

最佳答案

从 URL 中删除查询、片段部分

在Python中使用urlparse :

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

或者更轻量级的方法,但它可能不太通用:

print URL.partition('?')[0]

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

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

因此,如果没有片段标识符(上述正则表达式中的最后一部分)或存在查询组件(倒数第二部分),则 URL.partition('?')[0] 应该可以工作,否则答案会在“?”上分割网址会失败,例如,

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()可用于读取页面内容。

关于php - 如何使用python/PHP去除URL链接中的冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868092/

相关文章:

python - 将日期时间对象传递给 django 中的 url

python - 使用 cassandra-python-driver 记录所有查询

javascript - 如何获取两个具有不同id的隐藏标签的值

javascript - 初始化后如何更改 Bootstrap 日期时间选择器的选项?

php - 使用 PHP 的最简单的双向加密

php - 使 WordPress 文件生效后,所有显示损坏的图像,甚至图像都存在于该路径中

python - 使用 settings.LANGUAGES 使用 gettext() 正确翻译名称

php - 为什么使用 mysqli_close()?

PHP、正则表达式 - 如何使用 preg_replace 转义\n?

html - 悬停语法之间的区别