scrapy 爬一个网站,如:http://xxx.org/,遇到了一个链接是 http://xxx.org/新闻,
发现这个链接,在 scrpay print 话能输出到 shell 里,在 scrapy shell 里用 sel.xpath("//@href"),也能筛选到,但是在入 mysql 的时候,只能存入这个中文链接前的 url 链接,这个是 python2 的 unicode 问题么?
def parse(self, response):
conn = MySQLdb.connect(host="localhost",user="root",passwd="root",db="url")
cur = conn.cursor()
for sel in response.xpath('//@href').extract():
x = sel
cur.execute('insert into urlsinfo (url) values(%s)',x)
conn.commit()
cur.close()
代码略丑,勿喷。 刚学习 scrapy ,你们都是怎么解决这个问题的?
1
phantomer OP 入库前用 base64 encode 了也无法存入数据库。
|
2
fengxiang 2016-06-03 15:51:14 +08:00
charset=‘ utf8 ’
|
3
annielong 2016-06-03 16:01:05 +08:00
或者是 mysql 插入时候有问题,貌似插入中文的时候也要设置编码的
|
4
besttime 2016-06-03 16:04:03 +08:00
感觉是数据库的问题, mysql 使用之前默认编码改了吗?没改就肯定了。别怪 python 哦。
|
5
WangYanjie 2016-06-03 16:23:58 +08:00
是数据库的问题吧
|
6
phantomer OP |
7
fengxiang 2016-06-03 16:29:56 +08:00 1
你要告诉 python 用 utf-8 操作数据库
MySQLdb.connect(host="localhost",user="root",passwd="root",db="url", charset=‘ utf8 ’) |
9
whnzy 2016-06-03 16:41:32 +08:00
try: except 把错误报出来
|
11
mactaew 2016-06-03 18:03:32 +08:00
PHPer 一眼想到的是 urlencode() 和 urldecode() 。。。
|