帮我设计一个实时爬取新闻数据,并将数据保存在MySQL数据库中,给出相关代码
时间: 2023-05-21 15:01:39 浏览: 250
好的,以下是一个简单的Python程序,可以实时爬取新闻数据并将其保存在MySQL数据库中:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
import time
# MySQL数据库连接信息
db_host = 'localhost'
db_user = 'root'
db_password = 'password'
db_name = 'news'
# 新闻网站的URL
url = 'https://news.baidu.com/'
# 连接MySQL数据库
db = pymysql.connect(db_host, db_user, db_password, db_name)
cursor = db.cursor()
# 创建新闻表
cursor.execute('CREATE TABLE IF NOT EXISTS news (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), url VARCHAR(255), content TEXT)')
while True:
# 获取新闻页面的HTML代码
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析新闻页面,获取新闻标题和URL
news_list = soup.find_all('a', {'class': 'title'})
for news in news_list:
title = news.get_text()
url = news['href']
# 获取新闻内容
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
content = soup.find('div', {'class': 'article'}).get_text()
# 将新闻数据保存到MySQL数据库中
sql = "INSERT INTO news (title, url, content) VALUES (%s, %s, %s)"
cursor.execute(sql, (title, url, content))
db.commit()
# 每隔10秒钟爬取一次新闻数据
time.sleep(10)
# 关闭MySQL数据库连接
db.close()
```
请注意,这只是一个简单的示例程序,实际应用中需要考虑更多的细节,例如如何处理异常、如何优化数据库性能等。
阅读全文