यह सरल अजगर 3 स्क्रिप्ट:मैं ValueError को कैसे ठीक करूं: बंद फ़ाइल अपवाद को पढ़ा?
import urllib.request
host = "scholar.google.com"
link = "/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0"
url = "http://" + host + link
filename = "cite0.bib"
print(url)
urllib.request.urlretrieve(url, filename)
इस अपवाद को जन्म देती है:
Traceback (most recent call last):
File "C:\Users\ricardo\Desktop\Google-Scholar\BibTex\test2.py", line 8, in <module>
urllib.request.urlretrieve(url, filename)
File "C:\Python32\lib\urllib\request.py", line 150, in urlretrieve
return _urlopener.retrieve(url, filename, reporthook, data)
File "C:\Python32\lib\urllib\request.py", line 1597, in retrieve
block = fp.read(bs)
ValueError: read of closed file
मैंने सोचा था कि यह एक अस्थायी समस्या हो सकती है, तो मैं तो जैसे से निपटने के लिए कुछ सरल अपवाद कहा:
import random
import time
import urllib.request
host = "scholar.google.com"
link = "/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0"
url = "http://" + host + link
filename = "cite0.bib"
print(url)
while True:
try:
print("Downloading...")
time.sleep(random.randint(0, 5))
urllib.request.urlretrieve(url, filename)
break
except ValueError:
pass
लेकिन यह सिर्फ Downloading...
विज्ञापन infinitum प्रिंट करता है।
यदि आप 'http: // scholar.google.com/robots.txt' में देखते हैं तो आप देख सकते हैं कि Google इस पृष्ठ के स्वचालित डाउनलोड को रोकता है। और यदि आप 'wget' का उपयोग करने का प्रयास करते हैं तो आपको' 403 निषिद्ध 'त्रुटि मिल जाएगी। मुझे संदेह है कि यह आपकी लिपि में भी हो रहा है। –
@sendle कोई एपीआई नहीं है, इसलिए मैं इसे मैन्युअल रूप से पार्स कर रहा हूं। –
@sendle, सबसे अधिक संभावना है कि आपको सामग्री प्राप्त करने के लिए कुकी भेजने की आवश्यकता हो। –