1

http://puu.sh/3Krct.png

我的程序会生成指向托管图像的服务的随机链接,它会抓取并下载随机图像。该程序发出大量请求,因此必须通过代理。

好吧,当程序启动时,我只是给它一个新的大型代理列表的路径;但是,有时代理无法连接到网站,有时它们会返回自定义 HTML 页面 - 或者图像服务会在页面上返回消息“您无权查看此图像”。虽然,该程序仍将保存请求并下载扩展名为 .png 的页面

所以有时这些 HTML/文本页面会保存为 .png 文件:

http://puu.sh/3KrxM.png

http://puu.sh/3KrGN.png

有什么办法可以阻止下载这些页面,只下载实际图像?

谢谢你。

if self.proxy != False:
    #make our requests go through proxy
    self.opener.retrieve(url, filename)
else:
    urllib.request.urlretrieve(url, filename)
4

1 回答 1

0

我认为你应该改变逻辑。

如果代理在获取您询问的页面时返回错误,它通常使用 HTTP 状态代码!= 200

然后,您应该按顺序检查:

  • HTTP状态!= 200
  • 为正确类型返回的 Content-type 标头(在本例中为 image/jpeg)

对于这类任务,我建议使用requests 模块

于 2013-07-24T08:49:56.087 回答