我正在制作一个应用程序,可以解析html并从中获取图像。使用beautifuldsoup和下载html很容易进行解析,图像也可以使用urllib2进行解析。
我确实对urlparse有问题,无法从相对路径中创建绝对路径。最好用一个例子来解释这个问题:

>>> import urlparse
>>> urlparse.urljoin("http://www.example.com/", "../test.png")
'http://www.example.com/../test.png'

正如您所看到的,urlparse不会带走../away。当我尝试下载图像时,会出现一个问题:
HTTPError: HTTP Error 400: Bad Request

有办法在urllib中解决这个问题吗?

最佳答案

我认为最好的方法是预先解析原始URL,并检查path组件。一个简单的测试是

if len(urlparse.urlparse(baseurl).path) > 1:

然后,您可以将它与DEMAS建议的索引相结合。例如:
start_offset = (len(urlparse.urlparse(baseurl).path) <= 1) and 2 or 0
img_url = urlparse.urljoin("http://www.example.com/", "../test.png"[start_offset:])

这样,就不会尝试转到根URL的父级。

关于python - Python urlparse:小问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4114225/

10-11 18:13