Невозможно получить или проанализировать страницу: курс "python для каждого" (данные списка рассылки) - PullRequest
0 голосов
/ 02 мая 2020

У меня есть следующий фрагмент кода. Это из задания 'Данные почтовой рассылки - часть I' в 'Python для всех' Курс на Coursera.

Для В этом задании мне пришлось загрузить некоторые данные списка рассылки из http://mbox.dr-chuck.net/ и запустить процесс очистки / моделирования данных.

import sys
import sqlite3
import time
import ssl
import urllib
from urllib.parse import urljoin
from urllib.parse import urlparse
import re
from datetime import datetime, timedelta

# Not all systems have this so conditionally define parser
try:
    import dateutil.parser as parser
except:
    pass


def parsemaildate(md):
    # See if we have dateutil
    try:
        pdate = parser.parse(tdate)
        test_at = pdate.isoformat()
        return test_at
    except:
        pass

    # Non-dateutil version - we try our best

    pieces = md.split()
    notz = " ".join(pieces[:4]).strip()

    # Try a bunch of format variations - strptime() is *lame*
    dnotz = None
    for form in ['%d %b %Y %H:%M:%S', '%d %b %Y %H:%M:%S',
                 '%d %b %Y %H:%M', '%d %b %Y %H:%M', '%d %b %y %H:%M:%S',
                 '%d %b %y %H:%M:%S', '%d %b %y %H:%M', '%d %b %y %H:%M']:
        try:
            dnotz = datetime.strptime(notz, form)
            break
        except:
            continue

    if dnotz is None:
        # print 'Bad Date:',md
        return None

    iso = dnotz.isoformat()

    tz = "+0000"

    try:
        tz = pieces[4]
        ival = int(tz)  # Only want numeric timezone values
        if tz == '-0000': tz = '+0000'
        tzh = tz[:3]
        tzm = tz[3:]
        tz = tzh + ":" + tzm
    except:
        pass

    return iso + tz


conn = sqlite3.connect('emreyavuzher.sqlite')
cur = conn.cursor()
conn.text_factory = str

baseurl = "http://mbox.dr-chuck.net/sakai.devel/"

cur.execute('''CREATE TABLE IF NOT EXISTS Messages 
    (id INTEGER UNIQUE, email TEXT, sent_at TEXT, 
    subject TEXT, headers TEXT, body TEXT)''')

start = 0
cur.execute('SELECT max(id) FROM Messages')
try:
    row = cur.fetchone()
    if row[0] is not None:
        start = row[0]
except:
    start = 0
    row = None

print(start) 

many = 0

# Skip up to five messages
skip = 5
while True:
    if (many < 1):
        sval = input('How many messages:')
        if (len(sval) < 1): break
        many = int(sval)

    start = start + 1
    cur.execute('SELECT id FROM Messages WHERE id=?', (start,))
    try:
        row = cur.fetchone()
        if row is not None: continue
    except:
        row = None

    many = many - 1
    url = baseurl + str(start) + '/' + str(start + 1)

    try:
        ctx = ssl.create_default_context()
        ctx.check_hostname = False
        ctx.verify_mode = ssl.CERT_NONE
        document = urllib.urlopen(url)

        text = document.read()
        if document.getcode() != 200:
            print("Error code=", document.getcode(), url) 
            break
    except KeyboardInterrupt:
        print('')
        print('Program interrupted by user...')
        break
    except:
        print("Unable to retrieve or parse page", url)
        print(sys.exc_info()[0]) 
        break

Я получаю сообщение об ошибке: Невозможно получить или проанализировать страницу http://mbox.dr-chuck.net/sakai.devel/1/2

Кто-нибудь может мне помочь?

...