解释代码,说明爬虫实现过程:if __name__ == "__main__": db = pymysql.connect(host="localhost",user="root",password="123456",db="maoyan",charset="utf8",port = 3306) cursor = db.cursor() cursor.execute("DROP TABLE IF EXISTS movies") createTab = """CREATE TABLE movies( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, link VARCHAR(50) NOT NULL, score VARCHAR(4) NOT NULL, descr VARCHAR(50), directer VARCHAR(100), timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP )""" cursor.execute(createTab) #采集到的数据循环插入数据中 start = 0 while (start < 250): lists = get_movies(start) for i in lists: sql = "INSERT INTO `movies`(`name`,`link`,`score`,`descr`,`directer`) VALUES(%s,%s,%s,%s,%s)" try: cursor.execute(sql, (i["name"], i["link"] , i["score"], i["quote"],i["mdirecter"])) db.commit() print(i["name"]+"...成功插入到数据库中") except: db.rollback() start += 25 db.close() cursor = db.cursor() conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='maoyan', charset='utf8mb4') cursor = conn.cursor() #输出评分top10 sql = "select * from movies limit 10" db = pd.read_sql(sql, conn) df = db.sort_values(by="score", ascending=False) print(df[['name', 'score']])
时间: 2024-03-31 11:36:05 浏览: 15
这段代码是一个完整的爬虫程序,包括了数据库的操作和数据的存储。程序使用 PyMySQL 库来连接 MySQL 数据库,并在其中创建一个名为 movies 的数据表。然后使用 while 循环和 get_movies(start) 函数来爬取 Top250 电影数据,并将数据插入到数据库中。
首先判断当前模块是否是主模块,如果是则执行下面的程序。接着使用 PyMySQL 库连接 MySQL 数据库,其中包括了主机名、用户名、密码、数据库名、字符集和端口号等参数。然后使用 cursor() 方法创建一个游标对象 cursor,该对象用于执行 SQL 语句。
接下来使用 execute() 方法执行 DROP TABLE IF EXISTS movies 语句,该语句用于删除已存在的 movies 表。然后使用 createTab 变量存储一个 SQL 语句,该语句用于创建名为 movies 的数据表,包括电影的 id、电影名、链接、评分、简介、导演和时间戳等字段。
然后使用 execute() 方法执行 createTab 语句,创建 movies 数据表。接着使用 while 循环和 get_movies(start) 函数来爬取 Top250 电影数据,其中 start 表示从哪个排名开始爬取数据。对于每个爬取到的电影数据,使用 INSERT INTO 语句将其插入到 movies 表中,并使用 try...except...finally 语句来捕获可能出现的异常并回滚事务或提交事务。
最后,使用 PyMySQL 库连接数据库,使用 cursor() 方法创建一个游标对象 cursor,然后使用 pd.read_sql() 方法读取 movies 表中的数据并将其存储到 DataFrame 对象 db 中。接着使用 sort_values() 方法按评分进行降序排列,并使用 print() 函数输出评分前 10 名的电影名和评分。