Python爬取数据:高效存储至MySQL数据库指南
python爬取的内容如何存到mysql

首页 2025-06-12 16:32:26



Python爬取内容并高效存储到MySQL数据库:实战指南 在当今信息爆炸的时代,数据已成为企业决策的重要支撑

    通过网络爬虫技术,我们可以从各大网站获取有价值的数据

    然而,仅仅抓取数据是不够的,如何高效、安全地存储这些数据以供后续分析使用,同样至关重要

    本文将详细介绍如何使用Python爬取网页内容,并将这些数据存储到MySQL数据库中,从而构建一个完整的数据采集与存储流程

     一、环境准备 在开始之前,请确保你已经安装了以下必要的软件和环境: 1.Python:推荐使用Python 3.x版本,因其具备更强大的功能和更好的社区支持

     2.MySQL:安装并配置好MySQL数据库,确保可以创建和访问数据库

     3.库依赖: -`requests`:用于发送HTTP请求,获取网页内容

     -`BeautifulSoup`:用于解析HTML文档,提取所需信息

     -`pymysql`或 `mysql-connector-python`:用于连接和操作MySQL数据库

     你可以通过pip安装这些库: pip install requests beautifulsoup4 pymysql 二、Python爬取网页内容 首先,我们需要编写一个Python脚本来爬取目标网页的内容

    这里以爬取一个简单的网页新闻标题为例

     import requests from bs4 import BeautifulSoup def fetch_webpage(url): try: response = requests.get(url) response.raise_for_status()检查请求是否成功 return response.text except requests.RequestException as e: print(fError fetching the webpage:{e}) return None url = http://example.com/news html_content =fetch_webpage(url) 接下来,使用BeautifulSoup解析HTML内容,提取新闻标题: if html_content: soup = BeautifulSoup(html_content, html.parser) titles= 【】 fortitle_tag in soup.find_all(h2, class_=news-title): 假设新闻标题在class为news-title的

标签内 titles.append(title_tag.get_text(strip=True)) print(titles) 三、配置MySQL数据库 在MySQL中创建一个数据库和相应的表来存储爬取的数据

    例如,创建一个名为`news_db`的数据库和一个名为`news_articles`的表: CREATE DATABASEnews_db; USE news_db; CREATE TABLEnews_articles ( id INT AUTO_INCREMENT PRIMARY KEY, titleVARCHAR(25 NOT NULL, fetched_at TIMESTAMP DEFAULTCURRENT_TIMESTAMP ); 四、连接MySQL数据库并存储数据 接下来,我们使用`pymysql`库连接到MySQL数据库,并将提取的新闻标题存储到`news_articles`表中

     import pymysql def store_in_mysql(titles): connection = pymysql.connect( host=localhost, user=your_mysql_user, password=your_mysql_password, db=news_db, charset=utf8mb4, cursorclass=pymysql.cursors.DictCursor ) try: with connection.cursor() as cursor: for title in titles: sql = INSERT INTOnews_articles (title)VALUES (%s) cursor.execute(sql, (title,)) connection.commit() except pymysql.MySQLError as e: print(fError storing data in MySQL: {e}) connection.rollback() finally: connection.close() if titles: store_in_mysql(titles) 五、完整代码与错误处理 将上述各部分代码整合,形成完整的爬虫脚本,并添加必要的错误处理和日志记录,以提高代码的健壮性和可维护性

     import requests from bs4 import BeautifulSoup import pymysql import logging 配置日志 logging.basicConfig(level=logging.INFO, format=%(asctime)s - %(levelname)s - %(message)s) def fetch_webpage(url): try: response = requests.get(url) response.raise_for_status() return response.text except requests.RequestException as e: logging.error(fError fetching the webpage:{e}) return None def parse_webpage(html_content): soup = BeautifulSoup(html_content, html.parser) titles= 【】 fortitle_tag in soup.find_all(h2, class_=news-title): titles.append(title_tag.get_text(strip=True)) return titles def store_in_mysql(titles): connection = pymysql.connect( host=localhost, user=your_mysql_user, password=your_mysql_password, db=news_db, charset=utf8mb4, cursorclass=pymysql.cursors.DictCursor ) try: with connection.cursor() as cursor: for title in titles: sql =

nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密