Scrapy возвращает два результата для каждого элемента, который я хотел бы очистить. Я мог бы просто удалить дубликаты позже в CSV-файле, но я чувствую, что есть гораздо более элегантное решение, которое я не вижу. Я не знаю, но я думаю, что дублирование также может замедлить сам анализ.Почему репарация возвращает два элемента?
class kickstarter(CrawlSpider):
name = 'kickstarter_successful'
allowed_domains = ['kickstarter.com']
start_urls = ['http://www.kickstarter.com/discover/successful']
rules = (
Rule(
SgmlLinkExtractor(allow=r'\?page=\d+'),
follow=True
),
Rule(
SgmlLinkExtractor(allow=r'/projects/'),
callback='parse_item'
)
)
COOKIES_ENABLED = False
DOWNLOAD_DELAY = 2
USER_AGENT = "ELinks (0.4pre5; Linux 2.6.10-ac7 i686; 80x33)"
def parse_item(self, response):
xpath = HtmlXPathSelector(response)
loader = XPathItemLoader(item=kickstarteritem(), response=response)
loader.add_value('url', response.url)
loader.add_xpath('name', '//div[@class="NS-project_-running_board"]/h2[@id="title"]/a/text()')
loader.add_xpath('launched', '//li[@class="posted"]/text()')
loader.add_xpath('ended', '//li[@class="ends"]/text()')
loader.add_xpath('backers', '//span[@class="count"]/data[@data-format="number"]/@data-value')
loader.add_xpath('pledge', '//div[@class="num"]/@data-pledged')
loader.add_xpath('goal', '//div[@class="num"]/@data-goal')
yield loader.load_item()
Проверьте журнал, может быть два разных URLs оба указывают на одну и ту же страницу. –
Да, вы правы, это так. Один раз с «ref = card» и один раз. Наверное, я ничего не могу с этим поделать? Не прерывание сделки. Спасибо. –