urllib.request -function возвращает None вместо ожидаемого значения - PullRequest
0 голосов
/ 30 апреля 2020
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)
...