shenk
@shenk
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.
  • Вопрос задан
  • 207 просмотров
Решения вопроса 2
inoise
@inoise
Solutions Architect, AWS Certified, Hybrid Cloud
много раз уже говорили что горизонтально масштабировать 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ZClick Москва
от 50 000 до 100 000 руб.
Protoplan Краснодар
от 80 000 до 150 000 руб.