python 多页爬取南京医科大学的新闻公告并存入数据库用pymysql
时间: 2024-12-25 22:31:50 浏览: 12
要在Python中爬取南京医科大学的新闻公告并将其存储到MySQL数据库,你需要按照以下步骤操作:
1. **安装所需库**:
首先确保已经安装了`requests`, `beautifulsoup4`, `pymysql`和`lxml`(BeautifulSoup的一个解析器)。如果没有,使用以下命令安装:
```bash
pip install requests beautifulsoup4 pymysql lxml
```
2. **获取网页数据**:
获取南京医科大学的新闻公告页面源码,然后使用BeautifulSoup解析。这里以假设是HTML为例,具体URL需要替换为你实际的目标地址。
```python
import requests
from bs4 import BeautifulSoup
import pymysql
url = 'https://njmu.edu.cn/xwgl/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
```
3. **分析网页结构**:
找到新闻公告的链接或者直接的新闻块,这可能依赖于网站的具体布局。例如,如果每个公告是一条单独的`<div>`,你可以搜索`class`或`id`。
```python
news_divs = soup.find_all('div', class_='news-item') # 假设新闻在这样的div里
```
4. **创建数据库连接**:
连接到MySQL服务器,创建一个游标来执行SQL操作。
```python
db = pymysql.connect(host='localhost', user='your_username', password='your_password', db='your_database', charset='utf8mb4')
cursor = db.cursor()
```
5. **插入数据到数据库**:
创建一个存储过程或直接写SQL插入新闻信息。这里假设每篇新闻有一个标题和描述字段。
```python
for news in news_divs:
title = news.h3.text.strip() # 提取标题
description = news.p.text.strip() # 提取描述
insert_query = """
INSERT INTO news_table (title, description) VALUES (%s, %s)
"""
cursor.execute(insert_query, (title, description))
```
6. **提交事务和关闭连接**:
提交事务并关闭数据库连接,防止数据丢失。
```python
db.commit()
cursor.close()
db.close()
```
7. **异常处理**:
可能需要处理网络请求失败、解析错误、数据库连接错误等异常情况。
记得替换上述代码中的数据库连接参数,并根据实际的网页结构调整HTML标签的选择。完成以上步骤后,你就能定期爬取并存储南京医科大学的新闻公告了。
阅读全文