def fetch_html(url):
# ungood idea to assume its UTF-8. Try to read header
try:
fp = urllib.request.urlopen(url)
fpbytes = fp.read()
html = fpbytes.decode("utf8")
fp.close()
print("Success! {} chars found".format(len(html)))
return html
except:
print("Failed to extract html, retrying again in a few seconds")
time.sleep(3.5)
fetch_html(url)
url = "https://i.reddit.com/r/AskReddit/top/.compact?sort=top&t=day"
html = fetch_html(url)
print(html)
html по-прежнему отсутствует, несмотря на то, что дает 70000 в лен (html), что дает? Я попытался переключить порядок, поместив fp.close () после возврата html, но он по-прежнему выдает ту же ошибку.
Я искал это в Google, хотя их проблема связана с неиспользованием возврата на их значения, которые отличаются в этом вопросе.
решено: https://gist.github.com/carcigenicate/ff1523fa66602a1c47b7c5ae4d6f1e92
def fetch_html(url):
while True:
try:
fp = urllib.request.urlopen(url)
fpbytes = fp.read()
html = fpbytes.decode("utf8")
fp.close()
print("Success! {} chars found".format(len(html)))
return html
except:
print("Failed to extract html, retrying again in a few seconds")
time.sleep(3.5)