Так что моя проблема в том, что информация, очищенная, не будет отображаться в базе данных.scrapy mysql возвращает пустые результаты
Мой паук прекрасно работает, распечатывая информацию, например, в файле .json.
pipelines.py
import sys
import MySQLdb
import hashlib
from scrapy.exceptions import DropItem
from scrapy.http import Request
class MySQLStorePipeline(object):
def __init__(self):
self.conn = MySQLdb.connect(host="10.0.2.2", user='root', passwd='', db='mpmf', charset="utf8", use_unicode=True)
self.cursor = self.conn.cursor()
def process_item(self, item, stack):
try:
self.cursor.execute("""INSERT INTO test (pen, name)
VALUES (%s, %s)""",
(item['pen'].encode('utf-8'), item['name'].encode('utf-8')))
self.conn.commit()
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
return item
и settings.py я добавил
ITEM_PIPELINES = {
'stack.pipelines.MySQLStorePipeline': 300,
}
и мой журнал показать это ошибки, но вы можете видеть, что сбор информации работает, даже если она отображает это.
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 577, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/root/stack/stack/pipelines.py", line 14, in process_item
self.cursor.execute("""INSERT INTO test (pen, name) VALUES (%s, %s)""", (item['pen'].encode('utf-8'), item['name'].encode('utf-8')))
AttributeError: 'list' object has no attribute 'encode'
поэтому никакие результаты не будут импортированы в базу данных