解释代码,分点和标题说明爬虫实现过程: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 16:35:26 浏览: 164
这段代码是一个爬虫实现过程,通过 Python 语言实现。下面分点解释:
1. 使用 `if __name__ == "__main__":` 来判断是否是主程序运行,防止其他模块导入时执行不必要的代码。
2. 连接 MySQL 数据库,其中 `host`、`user`、`password`、`db`、`charset`、`port` 分别为 MySQL 数据库的主机地址、用户名、密码、数据库名称、字符集和端口号。
3. 使用 `cursor.execute("DROP TABLE IF EXISTS movies")` 来清空数据库中的 `movies` 表。
4. 使用 `createTab` 来创建 `movies` 表,其中 `id`、`name`、`link`、`score`、`descr`、`directer`、`timestamp` 分别为表的字段名,`INT`、`VARCHAR`、`TIMESTAMP` 分别为字段的数据类型,`NOT NULL AUTO_INCREMENT PRIMARY KEY` 表示该字段为非空、自动增加且为主键。
5. 使用 `cursor.execute(createTab)` 来执行 SQL 语句,创建 `movies` 表。
6. 使用 `get_movies(start)` 函数获取电影数据,其中 `start` 为起始位置,每次循环增加 25,最多获取 250 条数据。
7. 使用 `for` 循环遍历获取到的电影数据,将数据插入到数据库中,其中 `sql` 为 SQL 语句,`i` 为当前电影数据,`try` 和 `except` 用于异常处理,`db.commit()` 用于提交事务。
8. 循环完毕后,关闭数据库连接。
9. 连接数据库,获取 `movies` 表中评分前 10 的数据,并使用 `pd.read_sql(sql, conn)` 将结果转化为 DataFrame 格式。
10. 使用 `df.sort_values(by="score", ascending=False)` 对 DataFrame 进行排序,按评分从高到低排序。
11. 输出评分前 10 的电影名称和评分。
阅读全文