标签内,格式为YYYY-MM-DD
date_str = article.find(span, class_=date).text.strip()
published_date = date_str 这里简单处理,实际可能需要转换为日期对象
articles.append({
title: title,
url: url,
content: content,
published_date: published_date
})
三、数据存储至MySQL
1. 使用pymysql直接执行SQL语句
python
import pymysql
数据库连接配置
db_config ={
host: localhost,
user: your_username,
password: your_password,
database: web_scraping,
charset: utf8mb4,
cursorclass: pymysql.cursors.DictCursor
}
建立数据库连接
connection = pymysql.connect(db_config)
try:
with connection.cursor() as cursor:
for article in articles:
sql =
INSERT INTO articles(title, url, content, published_date)
VALUES(%s, %s, %s, %s)
cursor.execute(sql,(article【title】, article【url】, article【content】, article【published_date】))
提交事务
connection.commit()
finally:
connection.close()
2. 使用SQLAlchemy进行ORM操作
SQLAlchemy提供了对象关系映射(ORM)功能,使得数据库操作更加直观和安全:
python
from sqlalchemy import create_engine, Column, Integer, String, Text, Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class Article(Base):
__tablename__ = articles
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(255), nullable=False)
url = Column(String(255), nullable=False)
content = Column(Text)
published_date = Column(Date)
创建数据库引擎
engine = create_engine(mysql+pymysql://your_username:your_password@localhost/web_scraping, echo=False)
Base.metadata.create_all(engine)
创建会话
Session = sessionmaker(bind=engine)
session = Session()
try:
for article in articles:
new_article = Article(
title=article【title】,
url=article【url】,
content=article【content】,
published_date=article【published_date】 注意:这里可能需要转换为日期对象
)
session.add(new_article)
session.commit()
finally:
session.close()
四、优化与注意事项
1. 遵守robots.txt协议
在爬取任何网站之前,务必检查并遵守其`robots.txt`文件中的规则,以避免违反网站的使用条款
2. 异常处理
网络请求和数据解析过程中可能会遇到各种异常,如超时、连接失败、HTML结构变化等
因此,添加适当的异常处理机制至关重要
3. 数据清洗
从网页抓取的数据往往包含HTML标签、特殊字符等杂质,需要进行清洗和格式化,以确保数据的准确性和可用性
4. 性能优化
对于大规模数据爬取和存储任务,可以考虑使用多线程/多进程提高爬取效率,以及批量插入数据以减少数据库操作的开销
5. 合法性与隐私保护
确保您的爬取行为符合当地法律法规,尊重用户隐私和数据保护原则
结语
通过本文的介绍,您已经掌握了使用Python爬取数据并将其存储至MySQL的基本流程
无论是初学者还是有一定经验的开发者,都能在此基础上根据自己的需求进行扩展和优化
Python与MySQL的结合,为高效、灵活的数据处理提供了强大的工具链
随着技术的不断进步,数据抓取与存储的能力将成为您在数据驱动时代中不可或缺的竞争力
开始您的数据探索之旅吧,让数据成为推动您事业发展的强大动力!