serg_small_developer
@serg_small_developer
Начинающий прогер

Как в scrapy записать данные в BD MySQL?

Всем привет. Помогите пожалуйста записать данные в базу данных, со 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 вот так
1VVJ1k.jpg

так вот, когда я выполняю это то у мне показывает примерно такие ошибки
NameError: name 'item' is not defined
я так понимаю что ошибка в class MySpider, искал примеры в нете, но не смог найти, всюду показывают примеры подключения и т.д., а как передать данные для записи из класса парсера в посредник никто не показывает.

Помогите пожалуйста, какой модуль мне нужно подключить или исправить если где-то написал не так.
  • Вопрос задан
  • 860 просмотров
Решения вопроса 1
Astrohas
@Astrohas
Python/Django Developer
Добавьте self перед item в методе parse
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы