반응형
버전 2.7 및 Mac입니다.
어떤 이유로 "제공된 스키마 없음"과 같은 오류와 request.get () 자체를 사용할 때 오류가 발생합니다.
내 코드는 다음과 같습니다.
# Saves the XKCD comic page for offline read
import requests, os, bs4, shutil
url = 'http://xkcd.com/'
if os.path.isdir('xkcd') == True: # If xkcd folder already exists
shutil.rmtree('xkcd') # delete it
else: # otherwise
os.makedirs('xkcd') # Creates xkcd foulder.
while not url.endswith('#'): # If there are no more posts, it url will endswith #, exist while loop
# Download the page
print 'Downloading %s page...' % url
res = requests.get(url) # Get the page
res.raise_for_status() # Check for errors
soup = bs4.BeautifulSoup(res.text) # Dowload the page
# Find the URL of the comic image
comicElem = soup.select('#comic img') # Any #comic img it finds will be saved as a list in comicElem
if comicElem == []: # if the list is empty
print 'Couldn\'t find the image!'
else:
comicUrl = comicElem[0].get('src') # Get the first index in comicElem (the image) and save to
# comicUrl
# Download the image
print 'Downloading the %s image...' % (comicUrl)
res = requests.get(comicUrl) # Get the image. Getting something will always use requests.get()
res.raise_for_status() # Check for errors
# Save image to ./xkcd
imageFile = open(os.path.join('xkcd', os.path.basename(comicUrl)), 'wb')
for chunk in res.iter_content(10000):
imageFile.write(chunk)
imageFile.close()
# Get the Prev btn's URL
prevLink = soup.select('a[rel="prev"]')[0]
# The Previous button is first <a rel="prev" href="/1535/" accesskey="p">< Prev</a>
url = 'http://xkcd.com/' + prevLink.get('href')
# adds /1535/ to http://xkcd.com/
print 'Done!'
오류는 다음과 같습니다.
Traceback (most recent call last):
File "/Users/XKCD.py", line 30, in <module>
res = requests.get(comicUrl) # Get the image. Getting something will always use requests.get()
File "/Library/Python/2.7/site-packages/requests/api.py", line 69, in get
return request('get', url, params=params, **kwargs)
File "/Library/Python/2.7/site-packages/requests/api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 451, in request
prep = self.prepare_request(req)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 382, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/Library/Python/2.7/site-packages/requests/models.py", line 304, in prepare
self.prepare_url(url, params)
File "/Library/Python/2.7/site-packages/requests/models.py", line 362, in prepare_url
to_native_string(url, 'utf8')))
requests.exceptions.MissingSchema: Invalid URL '//imgs.xkcd.com/comics/the_martian.png': No schema supplied. Perhaps you meant http:////imgs.xkcd.com/comics/the_martian.png?
문제는이 책에서 프로그램에 대한 섹션을 여러 번 읽고 Requests 문서를 읽고 여기에 대한 다른 질문을 살펴본 것입니다. 내 구문이 올바르게 보입니다.
당신의 도움을 주셔서 감사합니다!
편집하다:
이것은 작동하지 않았습니다.
comicUrl = ("http:"+comicElem[0].get('src'))
http : 전에 추가하면 스키마 제공 오류가 제거 될 것이라고 생각했습니다.
해결 방법
comicUrl
을 다음으로 변경하십시오.
comicUrl = comicElem[0].get('src').strip("http://")
comicUrl="http://"+comicUrl
if 'xkcd' not in comicUrl:
comicUrl=comicUrl[:7]+'xkcd.com/'+comicUrl[7:]
print "comic url",comicUrl
참조 페이지 https://stackoverflow.com/questions/30770213
반응형
'파이썬' 카테고리의 다른 글
파이썬 Spark 컨텍스트 'sc'가 정의되지 않았습니다. (0) | 2020.11.22 |
---|---|
파이썬 내 plt.savefig가 작동하지 않는 이유는 무엇입니까? (0) | 2020.11.22 |
파이썬 조건부 인덱싱을 사용하여 셀에서 스칼라 값을 얻는 방법 (0) | 2020.11.22 |
파이썬 How to fix Python ValueError:bad marshal data? (0) | 2020.11.22 |
파이썬 괄호가 있거나없는 파이썬 주장 (0) | 2020.11.22 |
댓글