2017年5月24日 星期三

Python邊學邊記錄-Crawler網路爬蟲-第二課-防呆

Python Crawler

Python邊學邊記錄-Crawler網路爬蟲-第一課
已經可以取得網頁的資料了,距離目標也就進了一步!
但是我們會發現,如果今天是一個網頁那就沒事,起爬了就開始走,但是如果網頁不存在呢?

Python Crawler

程式就中斷了...如果只是一個網頁是小事,如果有很多網頁的話,第一個網頁就掛了,那這中間的等待時間都白費了,所以我們需要去做例外處理!!

try:
    resp = requests.get('http://marty.blogspot.com/p/python.html')
except:
    resp = None
if rsep and resp.status_code == 200 :
    soup = BeautifulSoup(resp.text, 'html.parser')
    print(soup.find('h1').text)

透過try except來讓程式可以順利的執行完畢。

Python Crawler

如此程式就會順利的一直走下去,不會是上面的錯誤中斷了。
但是,如果還有其它的呢?像tag不在存之類的...總不能...遇見一個就try一個吧!

所以我們就可以把程式碼重構一下,把判斷的部份另外拉出一個fucntion

def get_tag(url, head_tag):
    try:
        resp = requests.get(url)
        if resp.status_code == 200:
            soup = BeautifulSoup(resp.text, 'html.parser')
            return soup.find(head_tag).text
    except Exception as e:
        return None

這樣子,就可以美觀又防呆了!









沒有留言:

張貼留言