많은 예외가있는 파이썬 스크립트가 있습니다. 약 50,000 건의 요청을하려고합니다. 그리고 지금은 매우 느립니다. 스크립트가 실행되기를 원합니다. 그러므로 connectionError와 거의 모든 예외 요청을 추가했습니다.파이썬 요청 받기가 더 빠르도록 만들기
이 스크립트를 만들 수있는 방법이 있습니까? 이제는 모듈 식보다 훨씬 빠릅니다.
for i in range(50450000,50500000):
try:
try:
try:
try:
try:
try:
try:
try:
try:
try:
try:
try:
check_response = 'http://www.barneys.com/product/adidas--22human-race-22-nmd-sneakers-'+str(i)+'.html'
make_requests = requests.get(check_response,headers=headers).text
soup = BeautifulSoup(make_requests)
try:
main_wrapper = soup.find('h1',attrs={'class':'title'}).text
print main_wrapper + ' ' + str(i)
except AttributeError:
arr.append(check_response)
with open('working_urls.json','wb') as outfile:
json.dump(arr,outfile,indent=4)
except requests.exceptions.InvalidURL:
continue
except requests.exceptions.InvalidSchema:
continue
except requests.exceptions.MissingSchema:
continue
except requests.exceptions.TooManyRedirects:
continue
except requests.exceptions.URLRequired:
continue
except requests.exceptions.ConnectTimeout:
continue
except requests.exceptions.Timeout:
continue
except requests.exceptions.SSLError:
continue
except requests.exceptions.ProxyError:
continue
except requests.exceptions.HTTPError:
continue
except requests.exceptions.ReadTimeout:
continue
except requests.exceptions.ConnectionError:
continue
예외를 제외 할 때마다 try/except가 필요하지 않습니다. 한 번의 시도만으로도 충분하며 각 예외를 catch하면됩니다. throw 된 예외가 다음 예외와 일치하지 않으면 catch하려고 시도합니다. 그 중 하나가 적합하거나 아니면 다시 throw되어 스크립트가 중단 될 때까지 다음 예외를 찾습니다. – Philipp
이 모든 것은 * one *로 대체 될 수 있습니다 * except * except * except* except*.RequestException :'절과 일치하는 블록으로 시도하십시오. – vaultah
@vaultah 던져진 타입에 따라 예외를 처리 할 시점이없는 한 사실입니다. – Philipp