В настоящее время я тестирую своего первого паука с помощью scrapy, и все, кажется, работает нормально, за исключением случаев, когда я пытаюсь извлечь данные.
Я настроил конвейер так, чтобы элементы сохранялись и перенаправлялись вВ базе данных, которую можно прочитать с помощью sqlite3, для каждого элемента есть несколько тегов, но при экспорте данных сохраняется только первый тег.
У меня есть 3 столбца данных:
- title (1 данные в строке)
- author (по одной в строке)
- tags (несколько данных в строке).
Проблема в том, что тег столбца показывает только первый захваченный тег
class QuotetutorialPipeline(object):
def __init__(self):
self.create_connection()
self.create_table()
def create_connection(self):
self.conn = _sqlite3.connect("myquotes.db")
self.curr = self.conn.cursor()
def create_table(self):
self.curr.execute("""DROP TABLE IF EXISTS quotes_tb""")
self.curr.execute("""create table quotes_tb(
title text,
author text,
tag text
)""")
def process_item(self, item, spider):
self.store_db(item)
print("Pipeline :" + item['title'][0])
return item
def store_db(self,item):
self.curr.execute(""" insert into quotes_tb values (?,?,? )""", (
item['title'][0],
item['author'][0],
item['tag']
))
Я ожидаю, что для item[tag]
будет более одного элемента, но только первыйСохраненный.