Ringkasan beberapa teknik untuk menggunakan perangkak python untuk merangkak tapak web - Python - Bole Online http://python.jobbole.com/81997/ Teks asal ada di sini
def request(url, cookie='xxx', retries=5):
ret = urlparse.urlparse(url) # Parse input URL
if ret.scheme == 'http':
conn = httplib.HTTPConnection(ret.netloc)
elif ret.scheme == 'https':
conn = httplib.HTTPSConnection(ret.netloc)
url = ret.path
if ret.query: url += '?' + ret.query
if ret.fragment: url += '#' + ret.fragment
if not url: url = '/'
try:
conn.request(method='GET', url=url, headers={'Cookie': cookie})
res = conn.getresponse()
except Exception, e:
print e.message
if retries > 0:
return request(url=url, retries= retries - 1)
else:
print 'GET Failed'
return ''
else:
pass
finally:
pass
if res.status != 200:
return None
return res.read()
Prinsipnya ialah menggunakan pembolehubah cuba semula untuk menyimpan bilangan percubaan semula, dan kemudian mengulangi sendiri dan menetapkan bilangan percubaan semula sebanyak -1 setiap kali pengecualian dikendalikan Jika dinilai bahawa bilangan percubaan semula adalah kurang daripada 0, kembali terus dan cetak log kegagalan
Memanggil dirinya sendiri secara rekursif untuk melakukan kiraan cuba semula untuk menghadkan ialah kaedah yang paling langsung. Tetapi terdapat masalah: Jika alamat pihak lain hanya gagal buat sementara waktu, seperti memulakan semula perkhidmatan. Mencuba semula serta-merta masih gagal Masa untuk mencuba semula 5 kali adalah sangat singkat Apabila perkhidmatan pihak lain telah siap, permintaan itu diluluskan kerana ia telah dicuba semula 5 kali
.
Mekanisme yang saya gunakan ialah mencuba semula lima kali, menunggu selama 30s, 1 minit, 10 minit, 30 minit, dan 1 jam Jika masih gagal, ia dikira gagal. Sudah tentu, penggunaan ini berdasarkan logik perniagaan tertentu. Keperluan perniagaan yang berbeza mempunyai keperluan yang berbeza untuk permintaan.
Alhamdulillah saya baru jumpa penyelesaiannya
Ringkasan beberapa teknik untuk menggunakan perangkak python untuk merangkak tapak web - Python - Bole Online http://python.jobbole.com/81997/ Teks asal ada di sini
Prinsipnya ialah menggunakan pembolehubah cuba semula untuk menyimpan bilangan percubaan semula, dan kemudian mengulangi sendiri dan menetapkan bilangan percubaan semula sebanyak -1 setiap kali pengecualian dikendalikan Jika dinilai bahawa bilangan percubaan semula adalah kurang daripada 0, kembali terus dan cetak log kegagalan
Memanggil dirinya sendiri secara rekursif untuk melakukan kiraan cuba semula untuk menghadkan ialah kaedah yang paling langsung.
.Tetapi terdapat masalah:
Jika alamat pihak lain hanya gagal buat sementara waktu, seperti memulakan semula perkhidmatan. Mencuba semula serta-merta masih gagal Masa untuk mencuba semula 5 kali adalah sangat singkat Apabila perkhidmatan pihak lain telah siap, permintaan itu diluluskan kerana ia telah dicuba semula 5 kali
Mekanisme yang saya gunakan ialah mencuba semula lima kali, menunggu selama 30s, 1 minit, 10 minit, 30 minit, dan 1 jam Jika masih gagal, ia dikira gagal.
Sudah tentu, penggunaan ini berdasarkan logik perniagaan tertentu. Keperluan perniagaan yang berbeza mempunyai keperluan yang berbeza untuk permintaan.