Вы можете использовать гораздо более простой подход:
def parse(self, response):
for poster in response.xpath('//div[starts-with(@id, "maincard_")]'):
item = PapercrawlerItem()
item["title"] = poster.xpath('.//div[@class="maincardBody"]/text()[1]').get()
item["pdf"] = poster.xpath('.//a[@title="PDF"]/@href').get()
yield item