【发布时间】:2016-03-12 21:44:55
【问题描述】:
我有一个抓取网站并写入 MySQL 的抓取代码
import MySQLdb.cursors
def __init__(self,stats):
self.dbpool = adbapi.ConnectionPool(<dbnam>,host=<host>,user=<user>,port=<port>,passwd=<pwd>, db=<dbname>, cursorclass=MySQLdb.cursors.DictCursor, charset='utf8', use_unicode=True)
def process_item(self, item, spider):
query = self.dbpool.runInteraction(self._conditional_insert, item)
query.addErrback(self.handle_error)
用于表格中数字列表的 Scrapy 脚本
item['numbers'] = sites.xpath('//*[@id="numbers-0"]/tbody/tr/td/text()').extract()
我正在抓取以下内容:10″ 11″ 12″ 等。我的代码返回以下内容:
'numbers': [u'10\u2033', u'11\u2033', u'12\u2033'],
将其插入 MySQL 数据库会引发错误消息 - 我猜是由于 unicode 问题。
tx.execute("""INSERT INTO numbers ('{0}').format(", ".join(item['numbers'])))
能否请您帮助插入成功。更好的是,如何从列表中删除特殊字符“\u2033”?
提前致谢!
【问题讨论】:
-
你使用的是 Python 2 还是 Python 3?
-
2.7.11 感谢 Bernard 对此进行调查!
-
不用担心,您介意尝试使用PyMySQL 而不是 MySQL 连接器吗?
-
从 MYSQL 连接器移动完全没有问题。我是 Python 和 Scrapy 的新手。只需要弄清楚如何使用 PyMySQL
-
执行与连接器完全相同的操作,只需将
pymysql放在适当的位置即可。并安装它运行sudo pip install PyMySQL。
标签: python mysql unicode utf-8 scrapy