Всем привет. Помогите пожалуйста записать данные в базу данных, со scrapy начал только недавно работать.
Я делаю скан всех ссылок из сайтмапа, вот так
from scrapy.spiders import SitemapSpider
class MySpider(SitemapSpider):
name = 'jobs'
sitemap_urls = ['http://example.com/sitemap.xml']
item = []
def parse(self, response):
item["title"] = response.css("title ::text").extract_first()
item["description"] = response.css("meta[name=\"description\"] ::attr(content)").extract_first()
item["url"] = response.url
item["status"] = response.status
return item
В settings.ts добавил эти строки
ITEM_PIPELINES = {
'craigslist.pipelines.CraigslistPipeline': 300,
}
DB_SETTINGS = {
'db': 'db',
'user': 'user',
'passwd': 'passwd',
'host': 'host',
}
в pipelines.py такой код
class CraigslistPipeline(object):
def process_item(self, item, spider):
query = ("INSERT INTO table1 (title, description, code, url) VALUES (%s, %s, %s, %s)")
self.cursor.execute(query, (
item["title"],
item["description"],
item["code"],
item["url"],
)
)
self.conn.commit()
return item
и в middlewares.py вот так
так вот, когда я выполняю это то у мне показывает примерно такие ошибки
NameError: name 'item' is not defined
я так понимаю что ошибка в class MySpider, искал примеры в нете, но не смог найти, всюду показывают примеры подключения и т.д., а как передать данные для записи из класса парсера в посредник никто не показывает.
Помогите пожалуйста, какой модуль мне нужно подключить или исправить если где-то написал не так.