【发布时间】:2014-03-14 17:37:27
【问题描述】:
我正在开发一个程序,该程序使用 Beautiful Soup 抓取网站,然后使用 urllib 检索在网站上找到的图像(使用图像的直接 URL)。我正在抓取的网站不是图像的原始主机,但确实链接到原始图像。我遇到的问题是,对于某些网站,检索 www.example.com/images/foobar.jpg 会将我重定向到主页 www.example.com 并生成一个空 (0 KB) 图像。事实上,去www.example.com/images/foobar.jpg 也会重定向。在我正在抓取的网站上很有趣,图像显示正常。
我在 SO 上看到了一些示例,但它们都解释了如何在绕过重定向时从网站捕获 cookie、标头和其他类似数据,但我无法让它们为我工作。有没有办法防止重定向并将图像存储在www.example.com/images/foobar.jpg?
这是保存图像的代码块:
from urllib import urlretrieve
...
for imData in imList:
imurl = imData['imurl']
fName = os.path.basename(URL)
fName,ext = os.path.splitext(fName)
fName += "_%02d"%(ctr,)+ext
urlretrieve(imurl,fName)
ctr += 1
处理所有抓取的代码太长太合理了。但我已经验证在 imData['imurl'] 中包含图像的准确 url,例如 http://upload.wikimedia.org/wikipedia/commons/9/95/Brown_Bear_cub_in_river_1.jpg。然而,某些图像重定向如下:http://www.public-domain-image.com/public-domain-images-pictures-free-stock-photos/fauna-animals-public-domain-images-pictures/bears-public-domain-images-pictures/brown-bear-in-dog-salmon-creek.jpg。
【问题讨论】:
-
您使用的实际代码会有所帮助。但尝试设置
User-agent标头(请参阅此thread)。
标签: python beautifulsoup urllib