python爬取多页新闻全部信息并保存数据库
时间: 2023-08-12 19:50:03 浏览: 86
爬取新闻网站新闻列表的python程序
好的,这里是一个例子,它可以爬取多页新闻并将所有信息保存到数据库中。这个示例使用了requests库来发送HTTP请求,使用了BeautifulSoup库来解析HTML页面,使用了SQLite数据库来存储数据。假设每个新闻都有标题、内容和发布时间三个字段。
```python
import requests
from bs4 import BeautifulSoup
import sqlite3
# 定义要爬取的新闻网站的URL和总页数
base_url = 'http://www.example.com/news?page='
total_pages = 10
# 连接到SQLite数据库
conn = sqlite3.connect('news.db')
# 创建一个游标对象
cursor = conn.cursor()
# 创建一个表来存储新闻
cursor.execute('CREATE TABLE IF NOT EXISTS news (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT, publish_time TEXT)')
# 循环遍历每一页
for page in range(1, total_pages + 1):
# 拼接当前页的URL
url = base_url + str(page)
# 发送HTTP请求并获取响应
response = requests.get(url)
# 使用BeautifulSoup解析HTML页面
soup = BeautifulSoup(response.content, 'html.parser')
# 找到新闻文章的列表
articles = soup.find_all('div', {'class': 'article'})
# 循环遍历每篇新闻文章
for article in articles:
# 获取新闻标题、内容和发布时间
title = article.find('h2').text.strip()
content = article.find('div', {'class': 'content'}).text.strip()
publish_time = article.find('span', {'class': 'time'}).text.strip()
# 将新闻标题、内容和发布时间插入到数据库中
cursor.execute('INSERT INTO news (title, content, publish_time) VALUES (?, ?, ?)', (title, content, publish_time))
conn.commit()
# 关闭游标和数据库连接
cursor.close()
conn.close()
```
在这个示例中,我们首先定义要爬取的新闻网站的URL和总页数。然后,我们连接到SQLite数据库,并创建一个表来存储新闻。接下来,我们循环遍历每一页,并发送HTTP请求并获取响应。使用BeautifulSoup解析HTML页面,并找到新闻文章的列表。循环遍历每篇新闻文章,获取新闻标题、内容和发布时间,并将它们插入到数据库中。最后,我们关闭游标和数据库连接。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的爬虫和数据库架构。同时,也要注意遵守网站的使用条款和法律法规,以确保合法合规。
阅读全文