python scrapy 爬一个网站的,遇到了中文链接,存入不了数据库,你们是咋样解决的??、

2016-06-03 15:37:51 +08:00
 phantomer

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 ,你们都是怎么解决这个问题的?

4200 次点击
所在节点    Python
11 条回复
phantomer
2016-06-03 15:39:17 +08:00
入库前用 base64 encode 了也无法存入数据库。
fengxiang
2016-06-03 15:51:14 +08:00
charset=‘ utf8 ’
annielong
2016-06-03 16:01:05 +08:00
或者是 mysql 插入时候有问题,貌似插入中文的时候也要设置编码的
besttime
2016-06-03 16:04:03 +08:00
感觉是数据库的问题, mysql 使用之前默认编码改了吗?没改就肯定了。别怪 python 哦。
WangYanjie
2016-06-03 16:23:58 +08:00
是数据库的问题吧
phantomer
2016-06-03 16:27:59 +08:00
@fengxiang
@annielong
@besttime
@WangYanjie
数据库设置的是 utf-8
fengxiang
2016-06-03 16:29:56 +08:00
你要告诉 python 用 utf-8 操作数据库
MySQLdb.connect(host="localhost",user="root",passwd="root",db="url", charset=‘ utf8 ’)
phantomer
2016-06-03 16:33:10 +08:00
@fengxiang 我试试看。
whnzy
2016-06-03 16:41:32 +08:00
try: except 把错误报出来
phantomer
2016-06-03 17:51:39 +08:00
@fengxiang 感谢帮我解决了问题,结贴了。
mactaew
2016-06-03 18:03:32 +08:00
PHPer 一眼想到的是 urlencode() 和 urldecode() 。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX