我收到此错误: requests.exceptions.MissingSchema:URL无效' http:/1525/bg.png':未提供架构。也许你的意思是http://http:/1525/bg.png?
我并不十分关心错误发生的原因,我希望能够捕获任何无效的URL错误,发出消息并继续执行其余代码。
以下是我的代码,我试图使用try / except来解决该特定错误,但它无效...
# load xkcd page
# save comic image on that page
# follow <previous> comic link
# repeat until last comic is reached
import webbrowser, bs4, os, requests
url = 'http://xkcd.com/1526/'
os.makedirs('xkcd', exist_ok=True)
while not url.endswith('#'): # - last page
# download the page
print('Dowloading page %s...' % (url))
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "html.parser")
# find url of the comic image (<div id ="comic"><img src="........"
</div
comicElem = soup.select('#comic img')
if comicElem == []:
print('Could not find any images')
else:
comicUrl = 'http:' + comicElem[0].get('src')
#download the image
print('Downloading image... %s' % (comicUrl))
res = requests.get(comicUrl)
try:
res.raise_for_status()
except requests.exceptions.MissingSchema as err:
print(err)
continue
# save image to folder
imageFile = open(os.path.join('xkcd',
os.path.basename(comicUrl)), 'wb')
for chunk in res.iter_content(1000000):
imageFile.write(chunk)
imageFile.close()
#get <previous> button url
prevLink = soup.select('a[rel="prev"]')[0]
url = 'http://xkcd.com' + prevLink.get('href')
print('Done')
我不做什么? (我在python 3.5上) 感谢提前分配...
答案 0 :(得分:0)
如果您不关心错误(我认为编程错误),只需使用捕获所有异常的空白除外语句。
#download the image
print('Downloading image... %s' % (comicUrl))
try:
res = requests.get(comicUrl) # moved inside the try block
res.raise_for_status()
except:
continue
但另一方面,如果你的except块没有捕获异常那么它是因为异常实际发生在你的try块之外,所以将requests.get
移到try块中并且异常处理应该有效(如果你仍然需要它。)
答案 1 :(得分:0)
如果您在使用错误的网址时出现此类问题,请尝试此操作。
解决方案:
import requests
correct_url = False
url = 'Ankit Gandhi' # 'https://gmail.com'
try:
res = requests.get(url)
correct_url = True
except:
print("Please enter a valid URL")
if correct_url:
"""
Do your operation
"""
print("Correct URL")
希望这个帮助完整。
答案 2 :(得分:0)
try / except块未缓存异常的原因是该行发生了错误
res = requests.get(comicUrl)
在try
关键字上方。
按原样保留代码,仅将try
块向上移动一行即可解决该问题。