我有兩個功能可以正常工作,但是當我將它們嵌套在一起時似乎會失效。什麼是pythonic方式來捕捉錯誤,並繼續在這個循環?
def scrape_all_pages(alphabet):
pages = get_all_urls(alphabet)
for page in pages:
scrape_table(page)
我想系統地刮一些搜索結果。因此get_all_pages()
會爲字母表中的每個字母創建一個URL列表。有時候有成千上萬的頁面,但工作得很好。然後,對於每個頁面,scrape_table
只是對我感興趣的表格進行刮擦。這也可以正常工作。我可以運行整個事情,它工作正常,但我在Scraperwiki工作,如果我設置它運行並走開,它總是給我一個「列表索引超出範圍」的錯誤。這絕對是scraperwiki中的一個問題,但我想找到解決問題的方法,在遇到它們時添加一些try/except
子句和記錄錯誤。例如:
def scrape_all_pages(alphabet):
try:
pages = get_all_urls(alphabet)
except:
## LOG THE ERROR IF THAT FAILS.
try:
for page in pages:
scrape_table(page)
except:
## LOG THE ERROR IF THAT FAILS
雖然我一直無法弄清楚如何統一記錄錯誤。而且,上面看起來笨重,根據我的經驗,當東西看起來笨重時,Python有更好的方法。有沒有更好的辦法?因爲他們是所謂全部來自異常繼承
def scrape_all_pages(alphabet):
try:
pages = get_all_urls(alphabet)
for page in pages:
scrape_table(page)
except OutOfRangeError as error:
# Will only catch OutOfRangeError
print error
except Exception as error:
# Will only catch any other exception
print error
鳳雲類型異常將捕獲所有錯誤:
我實際上已經完成了類似'except Exception,e:print str(e)'這樣的東西 - 仍然不那麼優雅,但它幫助我消除了錯誤。 – Amanda