下面代码运行显示sqlite3.OperationalError: no such table

import sqlite3
import requests
from bs4 import BeautifulSoup


def get_names():
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0',
               'Host': 'movie.douban.com'}

    name_list = []
    for i in range(0, 10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)
        r = requests.get(link, headers=headers, timeout=20)
        if r.status_code == 200:
            print('第', str(i + 1), '页爬取完成')
        soup = BeautifulSoup(r.text, 'lxml')
        div_list = soup.find_all('div', class_='hd')
        for each in div_list:
            name = each.a.span.text.strip()
            name_list.append(name)

    return name_list


names = get_names()
print(names)
conn = sqlite3.connect('douban_movies_250.db')
cursor = conn.cursor()

for name in names:
    cursor.execute('INSERT INTO Top_250 (name) VALUES (?)', (name,))
    print('將', name, '寫入數據庫')

conn.commit()
cursor.close()
conn.close()

 

求求好心人看看

你没有创建数据库,加这段代码就可以了。

dbpath = ".\\douban_movies_250.db"
def init_db(dbpath):
    conn = sqlite3.connect(dbpath)
    cursor = conn.cursor()
    sql = '''
          create table Top_250
          (id integer primary key autoincrement,
          name varchar)
    '''
    cursor.execute(sql)
    conn.commit()
    conn.close()
init_db(dbpath)