【问题标题】:Download with Python from URL gives No Host Supplied error使用 Python 从 URL 下载会出现 No Host Supplied 错误
【发布时间】:2019-08-28 02:28:40
【问题描述】:

我正在尝试制作下载漫画的应用,但每当我尝试下载图片时,它都会显示未提供主机。

我真的搜索过,什么都没有。

这是代码:

import requests,bs4
url='https://www.marvel.com/comics/issue/71314/edge_of_spider-geddon_2018_1'
res=requests.get(url,stream=True)
res.raise_for_status()
soup=bs4.BeautifulSoup(res.text)
elem=soup.select('div[class="row-item-image"] img')#.viewer-cnt .row .col-xs-12 #ppp img')
#print(elem)
comicurl='https:'+elem[0].get('src')
res=requests.get(comicurl,stream=True,allow_redirects=True)
res.raise_for_status()
with open(comicurl[comicurl.rfind('/')+1:],'wb') as i:
    for chunk in res.iter_content(100000):
        i.write(chunk)

我希望它下载图像,但它给了我这个错误:

Traceback (most recent call last):
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\comicdownloader.py", line 10, in <module>
    res=requests.get(comicurl,stream=True,allow_redirects=True)
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 519, in request
    prep = self.prepare_request(req)
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 462, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\models.py", line 313, in prepare
    self.prepare_url(url, params)
  File "C:\Users\Islam\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\models.py", line 390, in prepare_url
    raise InvalidURL("Invalid URL %r: No host supplied" % url)
requests.exceptions.InvalidURL: Invalid URL 'https:https://i.annihil.us/u/prod/marvel/i/mg/6/b0/5b6c5e4154f75/portrait_uncanny.jpg': No host supplied

每当我在任何网站上尝试时,它都会给我。

【问题讨论】:

    标签: python python-3.x python-requests urllib


    【解决方案1】:

    看起来elem[0].get('src') 的计算结果为https://i.annihil.us/u/prod/marvel/i/mg/6/b0/5b6c5e4154f75/portrait_uncanny.jpg
    所以在comicurl='https:'+elem[0].get('src') 行,你在一个已经格式良好的url 前面添加http:,使其无效

    【讨论】:

    • 非常感谢,我真的很想接受你的回答和 leik 的回答,但我不知道如何再次非常感谢你
    【解决方案2】:

    无法反驳:Invalid URL 'https:https://i.annihil.us/u/prod -- URL 确实无效,可能你应该在下面的语句中去掉https

    comicurl='https:'+elem[0].get('src')
    

    【讨论】:

    • 它有效,非常感谢你
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 2022-11-24
    • 2017-01-11
    • 2021-05-21
    • 2021-09-07
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多