python 通过请求将html代码存储在数据库中 去除会让sql出错的特殊字符
时间: 2023-11-29 14:04:24 浏览: 61
Python处理mysql特殊字符的问题
在将 HTML 代码存储到数据库中之前,需要注意去除可能会导致 SQL 语句出错的特殊字符,例如单引号、双引号、反斜杠等等。这些字符应该被转义,以避免数据库执行 SQL 语句时出现错误。
在 Python 中,可以使用 MySQL Connector 提供的 `escape_string` 函数来对字符串进行转义。该函数会将字符串中的特殊字符转义成对应的转义字符,例如将单引号转义成两个单引号。
以下是一个示例代码,演示了如何使用 `escape_string` 函数对 HTML 代码进行转义并存储到 MySQL 数据库中:
```python
import requests
import re
from bs4 import BeautifulSoup
import mysql.connector
# 发送 HTTP 请求获取 HTML 页面
url = 'https://www.example.com'
response = requests.get(url)
# 使用 BeautifulSoup 解析 HTML 页面
soup = BeautifulSoup(response.text, 'html.parser')
# 获取页面标题和正文内容
title = soup.title.text
content = str(soup.body)
# 去除 HTML 标签和特殊字符
cleanr = re.compile('<.*?>')
content = re.sub(cleanr, '', content)
content = content.replace('\n', '').replace('\r', '').replace('\t', '')
# 转义特殊字符
content = mysql.connector.escape_string(content)
# 将标题和内容存储到数据库中
cnx = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test')
cursor = cnx.cursor()
add_page = ("INSERT INTO pages "
"(title, content) "
"VALUES (%s, %s)")
data_page = (title, content)
cursor.execute(add_page, data_page)
cnx.commit()
cursor.close()
cnx.close()
```
在上面的代码中,首先使用 `requests` 库发送 HTTP 请求获取 HTML 页面的源代码。然后,使用 `BeautifulSoup` 库解析 HTML 页面,获取页面的标题和正文内容。接着,使用正则表达式去除 HTML 标签和特殊字符,最后使用 `mysql.connector.escape_string` 函数对内容进行转义,并将标题和内容存储到数据库中。
需要注意的是,在存储 HTML 代码到数据库之前,应该先去除其中的特殊字符,并对其进行转义,以避免存储不必要的数据和 SQL 语句执行出错的问题。
阅读全文