Python BeautifulSoup数据库存储技巧

2023-04-17 00:00:00 python 数据库 技巧

BeautifulSoup是一个功能强大的Python库,用于解析HTML、XML、JSON等文档。在爬取和解析网页内容的过程中,我们有时需要将解析后的数据存储到数据库中。下面我们将讲解Python BeautifulSoup数据库存储技巧,包括MySQL、MongoDB和SQLite3等数据库。

  1. MySQL数据库存储

首先,我们需要安装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”的表格。接着,我们爬取网页内容并解析出标题和链接,并将其存储到数据库中。

  1. MongoDB数据库存储

要使用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”的集合中。

  1. SQLite3数据库存储

要使用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文件进行备份和分析。

相关文章