Python3 urllib图像检索

2023-12-09

我正在编写一个小的 Python 脚本来通过谷歌图像抓取图像。我已经成功地将我想要的图像的网址放在一个方便的列表中。现在,我只需要抓住它们......

对于每个图像网址我这样做:

    print("Retrieving:{0}".format(sFinalImageURL))
    sExt = sFinalImageURL.split('.')[-1]
    #u = urllib.request.urlopen(sFinalImageURL)
    try:
        u = urllib.request.urlopen(sFinalImageURL)
    except:
        print("error: cannot retrieve image")
        continue
    raw_data = u.read()
    print("read {0} bytes".format(len(raw_data)))
    u.close()
    global sImagesFolder
    try:
        f = open("{0}/{1}_{2}.{3}".format(sImagesFolder,sImage,i,sExt),'wb')
        f.write(raw_data)
        f.close()
    except:
        print("couldn't write to {0}/{1}_{2}.{3}".format(sImagesFolder,sImage,i,sExt))
    print()

以下是我遇到的问题:

即使我可以直接在浏览器中打开 URL,尝试打开一些 URL 也会出现 403 错误。那么图像服务器不喜欢 HTTP 请求标头中的某些内容...有什么想法吗?

这是一些输出:

Retrieving:http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg

error: cannot retrieve image

Retrieving:http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg

error: cannot retrieve image
Retrieving:http://1.bp.blogspot.com/-7SsJ1n3RdoA/Tf07NOgD5nI/AAAAAAAAABo/tl8qLLIU01Y/s1600/english-shepherd-dog-0003.jpg

read 11123 bytes

Retrieving:http://completedogfood.net/wp-content/uploads/2010/07/complete-dog-food.bmp
read 419630 bytes

维基百科似乎只允许访问真实的浏览器。
该问题可以通过指定一个来解决User-Agent真实浏览器的字符串,因为Python的urllib发送类似的东西Python-urllib/3.2默认情况下。

这是一个有效的示例(使用User-Agent我使用的浏览器的字符串):

url = 'http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg'
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19'
u = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': user_agent}))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3 urllib图像检索 的相关文章

随机推荐

  • 正则表达式 - PCRE (PHP) - 单词边界 (\b) 和重音字符

    为什么这封信 算作单词边界匹配 b在下面的例子中 图案 b cum b i Text cum 匹配不需要的 cum 有可能克服这个吗 当您添加u正则表达式的修饰符 b cum b iu
  • 在 weblogic 上访问 Mbean

    来自 oracle 的文档 域运行时 MBean 服务器 此 MBean 服务器也充当单个 驻留在托管服务器上的 MBean 的访问点 我想要做的是利用这个事实来访问分散在多个托管服务器中的所有自定义 mBean 例如假设我有两个节点 se
  • Roslyn – 自定义构建错误扩展

    目前是否有一种方法可以扩展 Roslyn 编译并添加一些自定义规则集 这些规则集会破坏构建并显示在 VisualStudio 的错误列表中 我搜索 StackOverflow 但没有有效的答案 也许最近在这个主题中出现了一些东西 或者也许有
  • 与 Mongo 聚合的运算符 $arrayElemAt < 3.2

    使用聚合蒙戈框架 我怎样才能达到相同的结果蒙戈 as in 蒙戈3 2随着操作 arrayElemAt Mongo 3 2 中的示例 收藏 id 1 name dave123 favorites chocolate cake butter
  • 使 JFormattedTextField 接受 3 位以上的小数

    我有一个JFormattedTextField它应该能够接受超过 3 位小数的双数 它接受条目0 1 0 01 0 001但拒绝0 0001以及具有更多小数位的数字 这就是我的代码现在的工作方式 DecimalFormat decimalF
  • 使用 confint() 估计 GLMM CI 时出错

    我有一组装有二元响应变量和一组连续变量的 GLMM 我想获得每个模型的置信区间 我一直在使用confint 功能 在 95 并且与profile方法 如果将其应用于没有交互的模型 那么它的工作不会出现任何问题 然而 当我申请时confint
  • 用模板专门化一个模板

    我有一个 免费 函数模板 如下所示 template
  • 确认值未从甜蜜警报服务返回

    已经创建了甜蜜的警报作为单独的服务 我将其注入到我的服务中 这就是贴心的提醒服务 function use strict angular module app services factory SweetAlert SweetAlertSe
  • 在 PyCharm 中添加代码模板 - 可能吗?

    我想向 PyCharm 添加新的代码模板 片段 例如我想扩展lw to log write Line here is sould be cursor after code completition from snippet 就像是https
  • R Xgboost:如何在 Windows 10 上编译具有 GPU 支持的 xgboost

    我按照此链接中提供的说明进行操作 如何在python windows平台 中安装xgboost包 and https xgboost readthedocs io en latest build html installing r pack
  • 单击锚点应该执行 javascript 而不是转到新页面

    我有一个 HTML 锚点 单击该锚点会使 div 向上或向下滑动 我称之为 JQuery 的 slideToggle 功能 我的问题 当我单击该链接时 它不会执行代码 而是会转到一个新页面 其中 url 是 javascript 代码 在我
  • app.config 文件和 XYZ.settings 文件有什么区别?

    我实际上正处于 NET 相关内容的学习阶段 我正在探索如何保存应用程序 我最终编写了自己的类 它将设置保存在 XML 文件中 然后我发现 NET 本身支持保存应用程序设置 但我找到了两种方法可以做到这一点 当我在 Visual Studio
  • 为什么我收到“密钥凭证开始日期无效。”尝试创建 Active Directory 服务主体

    我一直在尝试整合一系列围绕创建和刷新 AD 服务主体和应用程序的操作 我遇到问题的流程是 从 Azure Key Vault 获取证书 使用证书进行身份验证创建服务主体 和应用程序 PS gt Get AzureKeyVaultCertif
  • Jquery 可拖动 + 置于前面

    我有一个带有多个聊天 DIV 的窗口 用户可以在其中与不同的人聊天 目前 聊天 DIV 可以打开并移动 但我看不到将当前选择的 DIV 设置在前面 例如 当您将鼠标放在 DIV 上时 它会进入前台 HTML div class chatMe
  • 将文件上传到 HTML 表单并提交之间会发生什么?

    文件上传到 HTML 表单后 提交之前会发生什么情况 我已将简历上传到该网站https studyhut com employment 然后点击红色X将其删除 但我想确保它确实被删除了 检查 选择文件 按钮的元素 我发现它的 HTML 是
  • 将键值对拆分为 Google BigQuery 中的列

    我对 Google BigQuery 还很陌生 而且确实很挣扎 我的表有以下内容 order id line items 123 id 1 qy 1 sum 1 00 id 2 qy 6 sum 4 50 456 id 1 qy 3 sum
  • Web 应用程序会话与令牌的安全性

    背景 我正在开发一个网络应用程序 计划使用spring mvc和春季安全 我的计划是使用基于表单的身份验证 其中 spring security 验证凭据并设置会话JSESSIONID以便后续请求将根据请求标头中存在的 cookie 进行身
  • 如何删除 HTML 标题元素之间的行距?

    我有这个代码 h1 Something h1 h3 Somethings h3 h3 Some other things h3 我认为 HTML 会自动在它们之间添加 1 行间距 我希望它们没有 1 行间距 我的意思是逐行 而不是行间距 我
  • 如何在 Windows 服务器上安装 mongrel/rails 的 service_wrapper?

    我接到了一项令人不快的任务 要安装我在 Windows Server 2008 上编写的 Rails 3 应用程序 这绝对不是我的选择 承诺提供 Linux 服务器 但 I T 在最后一刻撤回了 所以请不要建议进行更改 环境作为解决方案 我
  • Python3 urllib图像检索

    我正在编写一个小的 Python 脚本来通过谷歌图像抓取图像 我已经成功地将我想要的图像的网址放在一个方便的列表中 现在 我只需要抓住它们 对于每个图像网址我这样做 print Retrieving 0 format sFinalImage