这是我的代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup as bs
import re
import pymysql
resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
soup = bs(resp ,"html.parser")
listUrls = soup.findAll("a", href=re.compile("^/wiki/"))
for url in listUrls:
if not re.search('\.(jpg|JPG)$', url['href']):
conn = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='wikiurl',
charset='utf8mb4'
)
try:
with conn.cursor() as cursor:
sql = "insert into 'wikiurl'('urlname','urlhref') VALUES (%s , %s)"
cursor.execute(sql,(url.get_text(), "https://en.wikipedia.org" + url["href"]))
conn.commit()
finally:
conn.close()
错误:
pymysql.err.ProgrammingError:(1064,"您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在''附近使用。 wikiurl'(' urlname',' urlhref')VALUES(' Wikipedia',' https://en.wikipedia.org/w'在第1行& #34)
答案 0 :(得分:2)
我认为你的sql语法有一些错误,但调试它并不容易。
我建议您使用此方法打印上面发送到mysql server.pymysql手册的真正的sql字符串:
mogrify(self, query, args=None)
'''通过调用返回发送到数据库的确切字符串 execute()方法。 此方法遵循扩展到DB API 2.0,然后是Psycopg。''' 例如:
你可以使用
print cursor.mogrify(sql,(url.get_text(), "https://en.wikipedia.org" + url["href"]))
答案 1 :(得分:1)
首先,我建议让空白最重视细节。
试试这个:
sql = "INSERT INTO wikiurl (urlname, urlhref) VALUES (%s, %s)"
另请注意,表名称周围不需要单引号。请参阅:MySQL Insert documentation.
编辑:您不需要在列名称周围加上引号。