Scrapy Piplines имеют дело с данными - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу написать сканер с копией, после того, как я напишу файл сканера, файл элементов, файл пиплайнов и т. Д. Я хочу сохранить данные в базу данных, но обнаружу, что тип данных элемента ['url '] на самом деле является строковым типом, строка содержит список, я не могу получить данные внутри, и я не могу найти, в чем проблема.

import pymysql
from . import settings


class JumiaspiderPipeline(object):

def __init__(self):
    self.conn=pymysql.connect(
        host=settings.MYSQL_HOST,
        db=settings.MYSQL_DBNAME,
        user=settings.MYSQL_USER,
        passwd=settings.MYSQL_PASSWORD,
        charset='utf8',
        use_unicode=False
    )
    self.cursor=self.conn.cursor()

def process_item(self, item, spider):
    self.insertdata(item)
    return item

def insertdata(self,item):
    sql="insert into jumia_scrapy (url) values (" +item['url']+")"
    print(sql)
    print(type(item['url'])
    self.cursor.execute(sql)
    self.conn.commit()

Почему item['url'] типа str? Я не смог получить данные списка.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы должны назначить URL в функции разбора вашего элемента следующим образом.

item["url"] = response.url
0 голосов
/ 05 сентября 2018

Используйте более простой конвейер, такой как SQLAlchemy или набор данных, который основан на SQLAlchemy.

пример с набором данных: SQLAlchemy / набор данных, как указать созданную таблицу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...