<h3>要删除查询,请从URL</h3>
<p>在Python中使用<a href="http://docs.python.org/library/urlparse#urlparse.urlsplit" rel="nofollow">^{<cd1>}</a>:</p>
<pre><code>import urlparse
url = urlparse.urlsplit(URL) # parse url
print urlparse.urlunsplit(url[:3]+('','')) # remove query, fragment parts
</code></pre>
<p>或者是一种更轻量级的方法,但它可能不那么通用:</p>
^{pr2}$
<p>根据<a href="http://tools.ietf.org/html/rfc3986#appendix-B" rel="nofollow">rfc 3986</a>,可以使用正则表达式解析URI:</p>
<pre><code>/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
</code></pre>
<p>因此,如果没有片段标识符(上面的regex中的最后一部分)或查询组件存在(从第二部分到最后一部分),那么<code>URL.partition('?')[0]</code>应该可以工作,否则将在“?”上拆分一个url会失败,例如</p>
<pre><code>http://example.com/path#here-?-ereh
</code></pre>
<p>但是<code>urlparse</code>回答仍然是<a href="http://ideone.com/HhdEt" rel="nofollow">works</a>。在</p>
<h3>检查是否可以通过URL访问页面</h3>
<p>在Python中:</p>
<pre><code>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()),
</code></pre>
<p><code>resp.read()</code>可用于读取页面内容。在</p>