Как сделать цикл очистки страницы? - PullRequest
0 голосов
/ 20 апреля 2019

Я очищаю страницу, но у меня проблема. Я не хочу печатать items ['Paragraphs'] = response.css ('p :: text'). Extract () в функции снова и снова. Вместо этого я хочу сделать из этого петлю. Я пытался несколько раз, но не получилось. Вот код ..

def parse_about(self, response):
    # do your stuff on a page
    items = response.meta['items']
    names = {'name1':'Headings','name2':'Paragraphs'}
    finder = {'find1':'h2::text , #mainContent h1::text','find2':'p::text'}
    for name in names.values():
        for find in finder.values():
            items[name] = response.css(find).extract()
            yield items

1 Ответ

0 голосов
/ 20 апреля 2019

Можете ли вы описать, какой вывод вы хотите получить?

Насколько я понял вашу проблему, вы можете применить zip к вашим диктовкам, это объединит ваши значения и сделает возможной итерацию в болееясный путь.И лучше выдать предмет в конце цикла.

def parse_about(self, response):
    # do your stuff on a page
    items = response.meta['items']
    names = {'name1':'Headings','name2': 'Paragraphs'}
    finder = {'find1':'h2::text , #mainContent h1::text', 'find2': 'p::text'}
    for name, find in zip(names.values(), finder.values()):
        items[name] = response.css(find).extract()
    yield items

Или просто почему бы не написать правильный дикт с самого начала?

def parse_about(self, response):
    # do your stuff on a page
    items = response.meta['items']
    dct = {
        'Headings': 'h2::text , #mainContent h1::text',
        'Paragraphs': 'p::text',
    }
    for name, find in dct.iteritems():
        items[name] = response.css(find).extract()
    yield items
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...