Scrapy, сканировать данные по onclick - PullRequest
0 голосов
/ 29 июня 2019

Я хочу извлечь заголовок и pdf-ссылку каждой статьи в этой ссылке: https://iclr.cc/Conferences/2019/Schedule?type=Poster

enter image description here

Мой код здесь

class ICLRCrawler(Spider):
    name = "ICLRCrawler"
    allowed_domains = ["iclr.cc"]
    start_urls = ["https://iclr.cc/Conferences/2019/Schedule?type=Poster", ]

    def parse(self, response):
        papers = Selector(response).xpath('//*[@id="content"]/div/div[@class="paper"]')
        titles = Selector(response).xpath('//*[@id="maincard_704"]/div[3]')
        links = Selector(response).xpath('//*[@id="maincard_704"]/div[6]/a[2]')
        for title, link in zip(titles, links):
            item = PapercrawlerItem()
            item['title'] = title.xpath('text()').extract()[0]
            item['pdf'] = link.xpath('/@href').extract()[0]
            item['sup'] = ''
            yield item 

Однако, похоже, нелегко получить название и ссылку на каждую статью.Здесь, как я могу изменить код для получения данных?

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Вы можете использовать гораздо более простой подход:

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
0 голосов
/ 29 июня 2019

вы должны заменить Extract()[0] на get_attribute('href')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...