找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3803|回复: 1

[已回复] 爬虫在传入mysql的时候出现了报错求教

1

主题

1

帖子

1

积分

贫民

积分
1
冷年糕 发表于 2017-5-8 16:19:22 | 显示全部楼层 |阅读模式
先放代码,如下
# -*- coding:utf-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import re
import pymysql


#解析URL
def req(url):
req = request.Request(url)
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36")
resp = request.urlopen(req)
soup = BeautifulSoup(resp,'html.parser')
return soup


#输出笑话内容
def qiushi(soup):
jieguo = soup.findAll("div",{"class":"content"})
for jieguo_text in jieguo:
print(jieguo_text.get_text())
return jieguo


#生成下一页连接
def nextlink(soup):
nextpage = soup.find('span',{'class':'next'}).parent
nextlink = "http://www.qiushibaike.com" + nextpage.get('href')
return nextlink




url = 'http://www.qiushibaike.com/text/'


soup = req(url) #解析连接


jieguo = soup.findAll("div",{"class":"content"})
for jieguo_text in jieguo:
print(jieguo_text.get_text())


url = nextlink(soup) #生成下一页连接


connection = pymysql.connect(host='localhost',
user='root',
password='111111',
db='test1',
charset='utf8mb4')


try:
with connection.cursor() as cursor:
for jieguo_text in jieguo:
sql = "insert into `qiushibaike`(`neirong`) values(%s)"
cursor.execute(sql,(jieguo_text,))
connection.commit()
finally:
connection.close();
结果报错是:
Traceback (most recent call last):
File "D:\qiushibaike.py", line 49, in <module>
cursor.execute(sql,(jieguo_text,))
File "D:\Program Files\Python35\lib\site-packages\pymysql\cursors.py", line 164, in execute
query = self.mogrify(query, args)
File "D:\Program Files\Python35\lib\site-packages\pymysql\cursors.py", line 143, in mogrify
query = query % self._escape_args(args, conn)
File "D:\Program Files\Python35\lib\site-packages\pymysql\cursors.py", line 118, in _escape_args
return tuple(conn.literal(arg) for arg in args)
File "D:\Program Files\Python35\lib\site-packages\pymysql\cursors.py", line 118, in <genexpr>
return tuple(conn.literal(arg) for arg in args)
File "D:\Program Files\Python35\lib\site-packages\pymysql\connections.py", line 821, in literal
return self.escape(obj, self.encoders)
File "D:\Program Files\Python35\lib\site-packages\pymysql\connections.py", line 814, in escape
return escape_item(obj, self.charset, mapping=mapping)
File "D:\Program Files\Python35\lib\site-packages\pymysql\converters.py", line 27, in escape_item
val = encoder(val, mapping)
File "D:\Program Files\Python35\lib\site-packages\pymysql\converters.py", line 110, in escape_unicode
return u"'%s'" % _escape_unicode(value)
File "D:\Program Files\Python35\lib\site-packages\pymysql\converters.py", line 73, in _escape_unicode
return value.translate(_escape_table)
TypeError: 'NoneType' object is not callable


目前是可以输出笑话的,但是想把笑话存到mysql里,就会出现上面的报错。有大神能指点一下哪里错了么
回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2017-5-9 19:40:31 | 显示全部楼层
看一下数据库连接是否正确, 打印一下cursor变量看是否正确, 感觉是cursor是空
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表