【问题标题】:trying download picture with urlib but HTTPError: HTTP Error 403: Forbidden尝试使用 urllib 下载图片但 HTTPError: HTTP Error 403: Forbidden
【发布时间】:2021-12-08 16:49:12
【问题描述】:

我正在尝试自动从该网站下载图片,但出现错误

代码

>  import urllib.request
>  rain = "http://www.bom.gov.au/charts_data/IDY20108/current/mslp-precip/IDY20108.mslp-precip.012.png?1634817600"
>   urllib.request.urlretrieve(rain, '/content/download_gambar/rain.png')

错误

HTTPError Traceback(最近调用 最后)在() 1 导入 urllib.request 2雨=“http://www.bom.gov.au/charts_data/IDY20108/current/mslp-precip/IDY20108.mslp-precip.012.png?1634817600” ----> 3 urllib.request.urlretrieve(rain, '/content/download_gambar/rain.png')

6 帧 /usr/lib/python3.7/urllib/request.py 中 http_error_default(self, req, fp, code, msg, hdrs) 647 类 HTTPDefaultErrorHandler(BaseHandler): 第648章 --> 649 引发 HTTPError(req.full_url, code, msg, hdrs, fp) 650 651类HTTPRedirectHandler(BaseHandler):

HTTPError:HTTP 错误 403:禁止

【问题讨论】:

  • 您可能需要登录或在您的 cookie 中设置一些正确的值(例如同意版权声明或类似内容)才能进行下载。
  • BoM 最近一直在打击网络抓取,但有可能通过简单地欺骗标题中的 User-Agent 来解决这个问题......
  • 我很好奇,看了看——确实是这样,参考reg.bom.gov.au/screenscraper/screenscraper_enquiry_form;如果您尝试使用修改后的标头进行自动访问,它将工作一次,但再次运行它会收到警告文档:“由于检测到潜在的自动访问请求,您的访问被阻止。气象局网站不支持网络抓取:如果您试图通过自动化方式访问局数据,您应该停止。”
  • 虽然你可能仍然可以使用selenium 的网络驱动程序让它工作,但请注意你明确违反了你正在抓取的网站的使用条款,所以我不会不推荐。
  • 所以没有办法安全且持续地自动化它吗?

标签: python


【解决方案1】:

改用这个方法试试!:

import requests # The requests module tends to be much better (in my opinion)
imageRequest = requests.get("http://www.bom.gov.au/charts_data/IDY20108/current/mslp-precip/IDY20108.mslp-precip.012.png?1634817600/content/download_gambar/rain.png")
with open("image.png", "wb") as imgFile: # 'wb' means write to file in binary mode
  imgFile.write(imageRequest.content)
  imgFile.close()

【讨论】:

  • 这是工作。但那张照片上什么都没有
猜你喜欢
  • 2022-12-19
  • 2020-09-28
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 2022-12-04
相关资源
最近更新 更多