帮我设计一个实时爬取新闻数据,并将数据保存在数据库中,给出相关代码
时间: 2023-05-21 09:01:38 浏览: 166
好的,我可以为您提供一个 Python 的实时爬虫代码,用于爬取新闻数据并将其保存在数据库中。以下是代码:
```python
import requests
from bs4 import BeautifulSoup
import sqlite3
import time
# 创建数据库连接
conn = sqlite3.connect('news.db')
c = conn.cursor()
# 创建新闻表
c.execute('''CREATE TABLE IF NOT EXISTS news
(id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
content TEXT,
url TEXT,
time TEXT)''')
# 爬虫函数
def spider():
url = 'https://news.baidu.com/'
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'}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
news_list = soup.select('.ulist.focuslistnews > li')
for news in news_list:
title = news.select_one('a').text
url = news.select_one('a')['href']
content = get_content(url)
time = news.select_one('.newstime').text
# 将数据插入数据库
c.execute("INSERT INTO news (title, content, url, time) VALUES (?, ?, ?, ?)", (title, content, url, time))
conn.commit()
# 获取新闻内容
def get_content(url):
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
content = ''
for p in soup.select('.article p'):
content += p.text
return content
# 定时执行爬虫函数
while True:
spider()
time.sleep(60)
```
这个代码会每隔 60 秒爬取一次百度新闻的头条新闻,并将标题、内容、链接和时间保存在 SQLite 数据库中。您可以根据需要修改代码来适应您的项目。
阅读全文