So ist mein Problem, dass die Informationen geschabt werden, wird nicht in der Datenbank angezeigt.scrapy mysql gibt leere Ergebnisse zurück
Meine Spinne funktioniert gut und druckt die Informationen aus, zum Beispiel in einer .json-Datei.
die 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
und in settings.py i
ITEM_PIPELINES = {
'stack.pipelines.MySQLStorePipeline': 300,
}
und meine log zeigen diese Fehler hinzugefügt haben, aber man kann sehen nach wie vor, dass die Informationsbeschaffung, obwohl es zeigt Werke Dies.
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'
so werden keine Ergebnisse in die Datenbank importiert