需要帮助以减少执行时间以抓取动态内容

时间:2019-07-10 05:07:42

标签: javascript python selenium-webdriver web-scraping beautifulsoup

我目前正在使用Selenium(chrome)从网站上抓取动态内容,但是自动浏览器的处理时间太长。 (我正在抓取的个人资料页面上有一个“查看更多”按钮,每次单击仅加载5个帖子)没有其他方法可以通过单击“查看更多”按钮来访问这些“隐藏”的帖子,花费太长时间以至于无法手动单击按钮以检索前一阵子的帖子。关于如何加快此过程的任何想法吗?

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

1 个答案:

答案 0 :(得分:0)

在页面上,有一个接受offsetlimit参数的URL。有了这个,您可以一次收到许多消息。您可以将其放入循环中,增加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.