我目前正在使用Selenium(chrome)从网站上抓取动态内容,但是自动浏览器的处理时间太长。 (我正在抓取的个人资料页面上有一个“查看更多”按钮,每次单击仅加载5个帖子)没有其他方法可以通过单击“查看更多”按钮来访问这些“隐藏”的帖子,花费太长时间以至于无法手动单击按钮以检索前一阵子的帖子。关于如何加快此过程的任何想法吗?
URL:https://r1.community.samsung.com/t5/user/viewprofilepage/user-id/5045
答案 0 :(得分:0)
在页面上,有一个接受offset
和limit
参数的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={}¤tUser={}'
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.