Scrapy возвращает только первый элемент каждой буквы в алфавитном списке - PullRequest
2 голосов
/ 06 февраля 2020

Я совершенно новичок в stackoverflow и python и scrapy. Мне нужно почистить несколько глоссариев, так что большинство из них прошло нормально, но я публикую сценарий для того, с чем я борюсь ниже. Я получаю только первую запись для каждого письма, и я не могу понять, почему ... любая помощь очень ценится! Спасибо! ni c

вот код:

    import scrapy


class GlossarySpider(scrapy.Spider):
    name = 'glossary'
    allowed_domains = ['www.edmunds.com']
    start_urls = ['https://www.edmunds.com/glossary/']

    def parse(self, response):
        results = response.xpath ("//div[@class='content']/dl")
        for result in results:
            title = result.xpath(".//dt/text()").get()
            text = result.xpath(".//dd/text()").get()
            yield{
                'title': title,
                'text': text
            }

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете использовать метод getall(), чтобы вернуть список со всеми результатами.

Кстати, после получения списка результатов вам нужно немного изменить свой код, чтобы он фактически отображался между именем и его определением.

После получения списка вы можете просто перебрать его, а затем записать в CSV-файл. Ниже приведен пример :

     with open('test.csv', 'a') as f:
        csv_writer = csv.writer(f)
        for result in results:
            title = result.xpath(".//dt/text()").getall()
            text = result.xpath(".//dd/text()").getall()
            for i in range(len(title)):
                csv_writer.writerow([title[i], text[i]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...