BeautifulSoup是一个功能强大的Python库,用于解析HTML、XML、JSON等文档。在爬取和解析网页内容的过程中,我们有时需要将解析后的数据存储到数据库中。下面我们将讲解Python BeautifulSoup数据库存储技巧,包括MySQL、MongoDB和SQLite3等数据库。
首先,我们需要安装pymysql库,用于连接MySQL数据库。
pip install pymysql
然后,我们可以通过以下代码创建一个表格并将数据存储到MySQL数据库中。
import pymysql
from bs4 import BeautifulSoup
import requests
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', db='mydb', charset='utf8')
cursor = conn.cursor()
# 创建表格
sql_create = "CREATE TABLE IF NOT EXISTS `mytable` (`id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
cursor.execute(sql_create)
# 爬取网页内容并解析
url = 'https://www.pidancode.com/'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
# 提取标题和链接并存储到数据库中
for link in soup.find_all('a'):
title = link.get_text().strip()
link = link.get('href')
if link and 'http' in link:
sql_insert = "INSERT INTO `mytable` (`title`, `url`) VALUES ('%s', '%s')" % (title, link)
try:
cursor.execute(sql_insert)
conn.commit()
except:
conn.rollback()
# 关闭连接
cursor.close()
conn.close()
在上面的代码中,我们首先连接Mysql数据库,然后创建一个名为“mytable”的表格。接着,我们爬取网页内容并解析出标题和链接,并将其存储到数据库中。
要使用MongoDB存储数据,我们需要安装pymongo库。
pip install pymongo
然后,我们可以通过以下代码将数据存储到MongoDB数据库中。
import pymongo
from bs4 import BeautifulSoup
import requests
# 连接MongoDB数据库
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['mydb']
collection = db['mycollection']
# 爬取网页内容并解析
url = 'https://www.pidancode.com/'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
# 提取标题和链接并存储到数据库中
for link in soup.find_all('a'):
title = link.get_text().strip()
link = link.get('href')
if link and 'http' in link:
data = {'title': title, 'url': link}
collection.insert_one(data)
在上面的代码中,我们首先连接到MongoDB数据库,然后爬取网页内容并解析出标题和链接,并将其存储到名为“mycollection”的集合中。
要使用SQLite3存储数据,我们需要使用Python内置的sqlite3模块。
import sqlite3
from bs4 import BeautifulSoup
import requests
# 连接SQLite3数据库
conn = sqlite3.connect('mydb.db')
cursor = conn.cursor()
# 创建表格
sql_create = "CREATE TABLE IF NOT EXISTS `mytable` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `title` TEXT NOT NULL, `url` TEXT NOT NULL);"
cursor.execute(sql_create)
# 爬取网页内容并解析
url = 'https://www.pidancode.com/'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
# 提取标题和链接并存储到数据库中
for link in soup.find_all('a'):
title = link.get_text().strip()
link = link.get('href')
if link and 'http' in link:
sql_insert = "INSERT INTO `mytable` (`title`, `url`) VALUES ('%s', '%s')" % (title, link)
cursor.execute(sql_insert)
conn.commit()
# 关闭连接
cursor.close()
conn.close()
在上面的代码中,我们首先连接SQLite3数据库,然后创建一个名为“mytable”的表格。接着,我们爬取网页内容并解析出标题和链接,并将其存储到数据库中。
总结
以上就是Python BeautifulSoup数据库存储技巧的详细介绍,分别介绍了MySQL、MongoDB和SQLite3三种数据库的存储方法。在实际开发中,我们可以根据需求选择合适的数据库进行存储。同时,我们也可以通过pandas库将数据导出为Excel文件或CSV文件进行备份和分析。