Нужна помощь в сокращении времени выполнения для очистки динамического контента - PullRequest
0 голосов
/ 10 июля 2019

В настоящее время я собираю динамический контент с веб-сайта, использующего Selenium (Chrome), но автоматизированный браузер обрабатывает слишком долго. (На странице профиля есть кнопка «Просмотреть больше», которую я очищаю, и она загружает только 5 сообщений за каждый клик). Нет другого способа получить доступ к этим «скрытым» сообщениям без нажатия кнопки «Просмотреть больше» и ее слишком много времени, чтобы вручную нажать на кнопку, чтобы получить сообщения за некоторое время назад. Есть идеи, как я могу ускорить этот процесс?

URL: https://r1.community.samsung.com/t5/user/viewprofilepage/user-id/5045

1 Ответ

0 голосов
/ 10 июля 2019

Глядя на страницу, есть URL, который принимает параметры offset и limit.При этом вы можете получить много сообщений одновременно.Вы можете поместить это в цикл, увеличив параметр offset и получить все сообщения без селена:

    from bs4 import BeautifulSoup
    import requests

    url = 'https://r1.community.samsung.com/t5/user/viewprofilepage/user-id/5045'

    user_id = url.split('/')[-1]
    posts_url = 'https://r1.community.samsung.com/plugins/custom/samsung/samsungelamer2/custom.profile-activity?type=posts&offset={}&limit={}&currentUser={}'

    offset = 0
    limit = 100

    soup = BeautifulSoup(requests.get(posts_url.format(offset, limit, user_id)).text, 'lxml')

    for i, (subject, message_body) in enumerate(zip(soup.select('.message-subject'), soup.select('.lia-message-body-content')), 1):
        print('Message {}'.format(i))
        print('Subject:\n', subject.text.strip())
        print('Message body:\n', message_body.text.strip())
        print('*' * 120)

Отпечатки:

    Message 1
    Subject:
     안드로이드 Q Beta 프리뷰 5 새로운 제스쳐
    Message body:
     안드로이드 Q O ...

    ...and so on.
...