Diese einfache Python 3 Skript:Wie behebe ich einen ValueError: Lese von Closed File Exception?
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)
hebt diese Ausnahme:
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
Ich dachte, das ein vorübergehendes Problem sein könnte, so habe ich einige einfache Ausnahme wie so Handhabung:
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
aber dies druckt nur Downloading...
ad infinitum.
Wenn Sie in "http: // scholar.google.com/robots.txt" suchen, können Sie sehen, dass Google das automatische Herunterladen dieser Seite verbietet. Und wenn Sie versuchen, 'wget' zu verwenden, erhalten Sie einen' 403 Forbidden' Fehler. Ich vermute, das passiert auch mit deinem Skript. –
@senderle Es gibt keine API, also analysiere ich sie manuell. –
@senderle, wahrscheinlich müssen Sie einen Cookie senden, um den Inhalt zu erhalten. –