开始的时候我的代码是这样的:
import requests
from pymysql import *
import pymysql
url = "https://movie.douban.com/j/chart/top_list?"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
param = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': '0', # 从库中的第几部电影去取
'limit': '20', # 一次取出的个数
}
data1 = []
response = requests.get(url,headers=headers,params=param).json()
for i in range(20):
data = []
res = response[i]
data.append(res['score'])
data.append(res['title'])
types = res['types']
c = ""
for i in types:
c = c + i + " "
data.append(c)
d = ""
regions = res['regions']
for j in regions:
d = d + j + " "
data.append(d)
e = ""
actors = res['actors']
for k in actors:
e = e + k + " "
data.append(e)
data1.append(data)
for i in data1:
print(i)
conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='douban', charset='utf8')
cs1 = conn.cursor()
for i in data1:
cs1.execute("insert into shuju values('%s','%s','%s','%s','%s')" % (i[0], [1], i[2], i[3], i[4]))
conn.commit()
conn.close()
运行后的结果报错
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax......后面还有不全列出来
这是因为在sql写入时,如果所写入文本中含有双引号,就会报错
解决方法:
使用pymysql.escape_string()方法,并且使用三个双引号写法
import requests
from pymysql import *
import pymysql
url = "https://movie.douban.com/j/chart/top_list?"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
param = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': '0', # 从库中的第几部电影去取
'limit': '20', # 一次取出的个数
}
data1 = []
response = requests.get(url,headers=headers,params=param).json()
for i in range(20):
data = []
res = response[i]
data.append(res['score'])
data.append(res['title'])
types = res['types']
c = ""
for i in types:
c = c + i + " "
data.append(c)
d = ""
regions = res['regions']
for j in regions:
d = d + j + " "
data.append(d)
e = ""
actors = res['actors']
for k in actors:
e = e + k + " "
data.append(e)
data1.append(data)
for i in data1:
print(i)
conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='douban', charset='utf8')
cs1 = conn.cursor()
for i in data1:
cs1.execute("""insert into shuju values("%s","%s","%s","%s","%s")""" % (i[0], [1], i[2], i[3], i[4]))
conn.commit()
conn.close()
这样就不会出现错误了