1,編碼問題:設定檔案編碼格式utf-8
2.連線超時:異常或者設定timeout
沒有設定timeout引數,結果在網路環境不好的情況下,時常出現read()方法沒有任何反應的問題,程式卡死在read()方法裡,搞了大半天,才找到問題,給urlopen加上timeout就ok了,設定了timeout之後超時之後read超時的時候會丟擲socket.timeout異常,想要程式穩定,還需要給urlopen加上異常處理,再加上出現異常重試,程式就完美了。
import urllib2 url='' fails = 0 while true: try: if fails >= 20: break req = urllib2.request(url) response = urllib2.urlopen(req, none, 3) page = response.read() except: fails += 1 print '網路連線出現問題, 正在嘗試再次請求: ', fails else: break
import urllib2# r = urllib2.request("
")try:
print 111111111111111111
f = urllib2.urlopen(r, data=none, timeout=3)
print 2222222222222222
result = f.read()
print 333333333333333333
except exception,e:
print "444444444444444444---------" + str(e)
print "55555555555555"
import socketsocket.setdefaulttimeout(10.0)
或者使用:httplib2 or timeout_urllib2
from urllib2 import urlopenfrom threading import timer
url = "
"def handler(fh):
fh.close()
fh = urlopen(url)
t = timer(20.0, handler,[fh])
t.start()
data = fh.read() #如果二進位制檔案需要換成二進位制的讀取方式
t.cancel()
我的的的urllib2的的urlopen內。
urllib2.urlopen(' codego.net timeout=1)
我該如何告訴python,如果到期應提高乙個自定義的錯誤? 任何想法?
1. 有你想要極少數情況下except:
。這樣做可以捕獲任何異常,它可以是難以除錯,以及它捕捉異常,包括systemexit
和keyboardinterupt
,它可以使你的程式煩人 在非常簡單的,你會趕上urllib2.urlerror
:
try:
urllib2.urlopen(" codego.net timeout = 1)
except urllib2.urlerror, e:
raise myexception("there was an error: %r" % e)
import urllib2
import socket
class myexception(exception):
pass
try:
urllib2.urlopen(" codego.net timeout = 1)
except urllib2.urlerror, e:
# for python 2.6
if isinstance(e.reason, socket.timeout):
raise myexception("there was an error: %r" % e)
else:
# reraise the original error
raise
except socket.timeout, e:
# for python 2.7
raise myexception("there was an error: %r" % e)
2. 在python 2.7.3:
import urllib2
import socket
class myexception(exception):
pass
try:
urllib2.urlopen(" codego.net timeout = 1)
except urllib2.urlerror as e:
print type(e) #not catch
except socket.timeout as e:
print type(e) #catched
raise myexception("there was an error: %r" % e)
3.url解析錯誤
使用異常處理,解析錯誤的url彈出異常,捕獲異常,continue,進行下個url的訪問
爬蟲遇到的問題
特殊字串處理的問題 第一佳大雞排 新街口店 黃燜雞公尺飯 被識別成資料夾名 處理特殊字元 dex0 line 6 find if dex0 1 line 6 line 6 0 dex0 約翰大叔 比薩 龍躍店 輸出時,有特殊字元,無法輸出。處理特殊字元 dex1 line 6 find if dex...
Scrapy 簡單爬蟲中遇到的問題總結
在進行item傳參時總是出現重複資料 在scrapy資料爬取中發現通過以下語句傳遞的引數會出現重複現象,導致爬取的資料出現重複和錯亂的現象。yield scrapy.request item url meta callback self.detail parse 為了解決以上問題,找到 scrapy...
編寫mblock遇到的問題
最近老闆讓我編輯mblock的擴充套件,儘管有乙個pdf教程,但是還是遇到了一點問題在這裡一一列出 1.這個裡面說的大部分都能看懂,先看這個 2.介紹一下pdf裡面我不理解的東西,下面有注釋的,不能直接用的 setup ps2x.config gamepad 13,11,12,10,true,fal...