import requests from bs4 import BeautifulSoup from pprint import pprint import pymysql # 定义函数:将评论数据保存到数据库中 def save_to_navicat(comments): # 创建数据库连接 conn = pymysql.connect(host='localhost', user='root', password='root', db='pa', charset='utf8') # 创建游标对象 cursor = conn.cursor() # 插入数据到 MySQL 数据库中 for comment in comments: sql = ''' INSERT INTO comment (content, author, likes, time, location) VALUES (%s, %s, %s, %s, %s) ''' try: # 执行 SQL 插入语句 cursor.execute(sql, (comment['content'], comment['author'], comment['likes'], comment['time'], comment['location'])) # 提交事务 conn.commit() except Exception as e: # 如果发生异常,回滚事务 conn.rollback() print('Insert error:', e) # 关闭游标和连接 cursor.close() conn.close() for page in range(5): url = "https://movie.douban.com/subject/30391186/comments?start={}&limit=20&sort=new_score&status=P".format(page*20) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") comments = [] for comment in soup.select(".comment-item"): content = comment.select_one(".comment-content").get_text().strip() author = comment.select_one(".comment-info a").get_text().strip() likes = comment.select_one(".votes").get_text().strip() time = comment.select_one(".comment-time").get_text().strip() location = comment.select_one(".comment-location").contents[-1].strip() comments.append({ "content": content, "author": author, "likes": likes, "time": time, "location": location }) print("第{}页的数据:".format(page+1)) pprint(comments),为什么数据库没有数据,完善代码
时间: 2024-04-03 18:33:54 浏览: 61
在您提供的代码中,缺少了将评论数据保存到数据库的步骤。您需要在获取到评论数据后,调用 `save_to_navicat()` 函数将数据保存到 MySQL 数据库中。您可以在代码中加入如下代码:
```
# 将获取到的评论数据保存到数据库中
save_to_navicat(comments)
```
这样,获取到的评论数据就会被保存到 MySQL 数据库中了。同时,需要注意数据库的配置是否正确,包括主机名、用户名、密码、数据库名等信息都需要正确配置。
相关问题
import requests from bs4 import BeautifulSoup import pymysql import random from selenium import webdriver from selenium.webdriver import ChromeOptions import re import time import requests
这段代码有一个语法错误,应该在 import 语句之间加上换行符。正确的写法如下:
```
import requests
from bs4 import BeautifulSoup
import pymysql
import random
from selenium import webdriver
from selenium.webdriver import ChromeOptions
import re
import time
import requests
```
请帮我解释一下这段代码:import requests from bs4 import BeautifulSoup import time import pymysql import pandas as pd import numpy as np import matplotlib.pyplot as plt from travel_save_file import * import re for page in range(1,200): print(page) time.sleep(
这段代码是一个Python脚本,主要功能是爬取一个旅游网站的数据,并将数据存储到MySQL数据库中。具体解释如下:
1. `import`语句用来导入需要用到的Python模块,包括`requests`、`bs4`、`time`、`pymysql`、`pandas`、`numpy`、`matplotlib.pyplot`、`travel_save_file`和`re`。
2. `for`循环用来遍历旅游网站的200个页面,每次循环都会爬取一个页面的数据。
3. `print`语句用来输出当前循环的页面数。
4. `time.sleep()`函数用来控制爬取每个页面之间的时间间隔,避免爬取过快被网站封IP。
5. `requests.get()`函数用来向旅游网站发送GET请求,获取页面的HTML源代码。
6. `BeautifulSoup`模块用来解析HTML源代码,提取需要的数据。
7. `re`模块用来进行正则表达式匹配,提取需要的数据。
8. `pymysql`模块用来连接MySQL数据库,并将数据存储到数据库中。
9. `pandas`和`numpy`模块用来处理数据,例如将数据转换为DataFrame格式,进行数据筛选和统计等操作。
10. `matplotlib.pyplot`模块用来绘制数据图表,展示数据分布和趋势等信息。
11. `travel_save_file`模块是自定义的模块,用来将爬取到的数据存储到本地文件中。
阅读全文