kshnkvn
@kshnkvn
t.me/kshnkvn

Как в несколько потоков проверять существование url?

Есть простой код, которым проверяю на валидность страницы:
def check_url():
    for page in range(0, 239999):
        soup = BeautifulSoup(get_html(url + str(page)), 'html.parser')
        if soup.find('h3', class_='description_404_A hide'):
            print('Page not exists: {}'.format(url + str(page)))
        else:
            print('Page found: {}'.format(url + str(page)))
            with open('pages.txt', 'a') as file:
                file.write(url + str(page) + '\n')

Естественно проверять на существование 239999 страниц чуть-чуть долго.
Как вариант я могу просто запустить несколько потоков с multiprocessing, каждый из которых будет проверять свой диапазон страниц, но я не думаю, что это python-way.
  • Вопрос задан
  • 234 просмотра
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
много раз уже говорили что горизонтально масштабировать stateless обработчики это к очередям) RabbitMQ, например.
А если охота не париться то берете AWS SQS + AWS Lambda и получаете обработку всего этого за .... я думаю за пару минут справится) даже во freetier может уложиться
Ответ написан
sim3x
@sim3x
Если у вас есть задача после, что-то делать с данными страницами, то используйте scrapy
Он умеет все что вам требуется

Если просто получить список - страница/код ответа, то parallel + curl
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Astrohas
@Astrohas
Python/Django Developer
asyncio
Ответ написан
tsarevfs
@tsarevfs
C++ developer
Все просто: https://stackoverflow.com/a/3332884/1762922
Если хочется больше слов на русском: toly.github.io/blog/2014/02/13/parallelism-in-one-line
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы