Не удается создать цикл для извлечения всех заголовков с веб-страницы - PullRequest
0 голосов
/ 26 ноября 2018

Я написал сценарий на python в сочетании с pyppeteer для очистки titles и links на заголовки различных сообщений с веб-страницы.Дело в том, что когда я запускаю свой скрипт, он может анализировать первый title и link первого поста.Мое намерение состоит в том, чтобы создать цикл, чтобы получить их все.Поскольку я очень новичок в работе с этой библиотекой, я не могу понять, как я могу создать цикл.Любая помощь будет оценена.

Мой сценарий до сих пор:

import asyncio
from pyppeteer import launch

async def get_titles_n_links():
    wb = await launch(headless=True)
    page = await wb.newPage()
    await page.goto('https://stackoverflow.com/questions/tagged/web-scraping')

    element = await page.querySelector('.question-hyperlink')
    title = await page.evaluate('(element) => element.textContent', element)
    link = await page.evaluate('(element) => element.href', element)
    print(f'{title}\n{link}\n')
    await wb.close()

asyncio.get_event_loop().run_until_complete(get_titles_n_links())

1 Ответ

0 голосов
/ 26 ноября 2018

Ваш код будет выглядеть так:

import asyncio
from pyppeteer import launch

async def get_titles_n_links():
    wb = await launch(headless=True)
    page = await wb.newPage()
    await page.goto('https://stackoverflow.com/questions/tagged/web-scraping')

    elements = await page.querySelectorAll('.question-hyperlink')

    for element in elements:
        title = await page.evaluate('(element) => element.textContent', element)
        link = await page.evaluate('(element) => element.href', element)
        print(f'{title}\n{link}\n')

    await wb.close()

asyncio.get_event_loop().run_until_complete(get_titles_n_links())
...