2017-09-06 12 views
0

私はウェブサイトをクロールし、私は必要なアイテムを見つけるために、このスクリプトを持っている...どこで何を使うべきですか? urllibはのpython3

from socket import timeout 
from urllib.request import Request, urlopen, URLError 
import bs4,urllib.parse 
def track(self): 
    for _object in _objects: 
     req = Request('http://example.com/item.php?id='+str(_object)) 
     req.add_header('User-Agent', 
         'Mozilla 5.0') 
     _URL = urlopen(req).read() 
     soup = bs4.BeautifulSoup(_URL, "html.parser") 
     allResults = [] 
     i = 1 

     for hit in soup.findAll('cite'): 
      if ("% Off" in hit.text): 
       allResults.append(str(i) + ". " + hit.text + " | Item => " + _object) 
       i += 1 

     if (len(allResults) == 0): 
      print("No result found for this item => " + _object) 
     else: 
      for element in allResults: 
       print(element) 

私は例外をスローしたいので、接続はウェブサイトに失敗したとき、またはその他の理由でそれはcouldn URLに到達すると、「何かが間違っていました」というメッセージが表示されます。

私はsocket.timeoutを使用する必要がありますが、どこにコードを入れるべきですか?

答えて

1

試しにurlopen呼び出しをラップ:コールを除い:

try: 
    _URL = urlopen(req).read() 
except Exception as e: 
    print("Something happened wrong: {}".format(e)) 
    # do something, eg: continue 
+0

コードの残りの部分にどうなりますか?例外がスローされた場合、次の行が例外の後に実行されます。ここではスープ変数 – DarkSuniuM

+1

を定義します。それはあなた次第ですが、例外をキャッチしています。これをループでやっているときに、 'continue'を呼び出して次の' _object'を実行してください –

関連する問題