urllib.urlretrieve获取图像,但图像被破坏

时间:2012-03-05 16:07:24

标签: python web-scraping

我目前正在教自己python(来自没有编程背景,但是很多系统管理员,脚本编写经验)并且已经开始创建一个查看网站并抓取所有图像的脚本/程序。我已经挣扎了很多但是我已经在一定程度上工作了。

现在,我当前的问题是,当我在url上执行urllib.urlretrieve(url,out_path)时:http://www.testsite.com/images/img.jpg - 它工作正常,但像http://www.testsite.com/../images/img.jpg这样的东西不起作用。当您在浏览器中点击该路径时,它可以正常工作,并且urllib.urlretrieve会检索图像,但是当您尝试在图像查看器中打开图像时它会被破坏。

这是我目前的代码:

http://pastebin.com/E9hutEGn - 对于pastebin帖子感到抱歉,代码有点太多了,我不想让帖子读得很糟糕。

任何人都能认识到它为什么不起作用吗?

1 个答案:

答案 0 :(得分:0)

首先,pastebin是好的(也是你使用它的一个很好的理由)。

对于你的问题,我认为这可能是与基本网址连接的路径的问题。 让我用一个例子来解释:

>>>> import urlparse
>>>> base="http://somesite.com/level1/"
>>>> path="../page.html"
>>>> urlparse.urljoin(base,path)
> 'http://somesite.com/page.html'

>>>> base="http://somesite.com/"
>>>> urlparse.urljoin(base,path)
> 'http://somesite.com/../page.html'

所以我想你必须手动拿走你的../

小补充:我正在寻找你的问题并发现this post也可能有用