Egorian
@Egorian

Как реализовать парсер?

Мне нужен парсер, который сможет отпарсить сайт с 11000 страниц. Парсер делать подсчет некоторых данных из текста с этих страниц.
url="https://website/post"
def parser(): 
 for num in range(1,11000):
    #получаю страницу сайта
    BeautifulSoup=bs4.BeautifulSoup( requests.get(url+str(num)).text,"html.parser" )
    # получаю блок с текстом
    post_text=BeautifulSoup.select(".post-text")
    print( "num= %s  " % num)
    try:
     print(post_text)
     print(post_text[0].text)
     ###
     ###Тут я обрабатываю текст и сохраняю число в переменную size
     ###
    except IndexError:
        pass
print(size)

Я сомневаюсь, что это будет быстро, поэтому думаю тут нужна многопоточность, но с ней я полностью не разобрался.
Как такую задачу разделить на потоки?
На каждый поток выделить определенное количество страниц, чтобы одну и та же страница не парсилась несколько раз?
Как тогда сохранить конечную переменную size из каждого потока? Сохранять в файл, приплюсовывая к тому числу, что уже есть в файле от других потоков? Или в массив?
В мультипоточности я не шарю, т.к. только начал всё это изучать
  • Вопрос задан
  • 348 просмотров
Пригласить эксперта
Ответы на вопрос 1
Tanner
@Tanner
Огромный человекоподобный боевой робот
Используйте Scrapy, оно умеет в потоки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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