đó là một đoạn mã kịch bản khai thác web.Xử lý Chưa hoàn tấtĐọc, URLError
def printer(q,missing):
while 1:
tmpurl=q.get()
try:
image=urllib2.urlopen(tmpurl).read()
except httplib.HTTPException:
missing.put(tmpurl)
continue
wf=open(tmpurl[-35:]+".jpg","wb")
wf.write(image)
wf.close()
q
là một Queue()
gồm url và 'mất tích là một hàng đợi rỗng để thu thập lỗi-chăn-urls
nó chạy song song 10 chủ đề.
và mỗi khi tôi chạy điều này, tôi nhận được điều này.
File "C:\Python27\lib\socket.py", line 351, in read
data = self._sock.recv(rbufsize)
File "C:\Python27\lib\httplib.py", line 541, in read
return self._read_chunked(amt)
File "C:\Python27\lib\httplib.py", line 592, in _read_chunked
value.append(self._safe_read(amt))
File "C:\Python27\lib\httplib.py", line 649, in _safe_read
raise IncompleteRead(''.join(s), amt)
IncompleteRead: IncompleteRead(5274 bytes read, 2918 more expected)
nhưng tôi sử dụng except
... tôi đã cố gắng cái gì khác như
httplib.IncompleteRead
urllib2.URLError
thậm chí,
image=urllib2.urlopen(tmpurl,timeout=999999).read()
nhưng không ai trong số này đang làm việc ..
làm thế nào tôi có thể bắt được IncompleteRead
và URLError
?
Chậm, nhưng lần đầu tiên nhấn vào google. Sooo, http://stackoverflow.com/a/14206036/1444854 nên giải quyết vấn đề của bạn. Nhân tiện, nói chung nếu bạn muốn bắt nhiều ngoại lệ, hãy đặt chúng vào một bộ tuple: ngoại trừ (httplib.IncompleteRead, urllib2.URLError) –