У меня есть CSV, полный URL-адресов, которые я хочу сканировать, которые находятся в urls-test.csv. Я хочу открыть файл CSV и сканировать каждый URL (удален из ошибки ниже, поэтому он не показан) и извлечь элемент css. Когда я пытаюсь запустить моего паука, я получаю следующую ошибку:
2020-04-30 15:09:51 [scrapy.core.scraper] ERROR: Spider error processing <GET https://www.websiteexamples.com/this-is-fake> (referer: None)
Traceback (most recent call last):
File "/Users/jcsmith427/PycharmProjects/sstksitemaps/venv/lib/python3.8/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/Users/jcsmsith427/PycharmProjects/sstksitemaps/venv/lib/python3.8/site-packages/scrapy/spiders/__init__.py", line 90, in parse
raise NotImplementedError('{}.parse callback is not defined'.format(self.__class__.__name__))
NotImplementedError: QuoteSpider.parse callback is not defined
Мой паук выглядит следующим образом:
items.py
import scrapy
class SstkscrapeItem(scrapy.Item):
contriburl = scrapy.Field()
sstkscrape_spider.py
import scrapy
from ..items import SstkscrapeItem
class QuoteSpider(scrapy.Spider):
name = 'sstkscrape'
allowed_domains = ["shutterstock.com"]
f = open("urls-test.csv")
start_urls = [url.strip() for url in f.readlines()]
f.close()
def parse(self, response):
items = SstkscrapeItem()
contriburl = response.css(".b_q_e a::attr(href)").extract()
items['contriburl'] = contriburl
yield items
pipelines.py
class SstkscrapePipeline:
def process_item(self, item, spider):
return item