在使用python请求进行抓取之前,请等待网页完全加载

问题描述 投票:2回答:1

我目前正在尝试从LinkedIn上的特定页面抓取数据。我有一个能够登录到LinkedIn的脚本,但是当我尝试访问包含数据的页面时,我遇到了麻烦。当我打电话给requests.get(data_url)时,我最终得到了在LinkedIn加载实际页面内容之前显示的LinkedIn加载屏幕的html。在实际抓取html数据之前,有没有办法让LinkedIn等待LinkedIn显示网站数据?在我能够“获取”内容之前,我基本上需要让页面完全呈现。我目前的脚本如下。

import requests
from bs4 import BeautifulSoup

client = requests.Session()

HOMEPAGE_URL = 'https://www.linkedin.com'
LOGIN_URL = 'https://www.linkedin.com/uas/login-submit'

html = client.get(HOMEPAGE_URL).content
soup = BeautifulSoup(html)
csrf = soup.find(id="loginCsrfParam-login")['value']

login_information = {
    'session_key':'EMAIL',
    'session_password':'PASSWORD',
    'loginCsrfParam': csrf,
}

client.post(LOGIN_URL, data=login_information)

r = client.get(data_url)
javascript python html web-scraping linkedin
1个回答
1
投票

如果网页的任何部分是动态呈现的,例如使用Javascript,那么beautifulsoup可能无法使用它。

我使用Selenium + PhantomJS。我加载页面(等待它完全加载)然后输入登录详细信息。 Selenium有很好的API,它允许您以编程方式检查特定的html元素并等待它们出现,这在这种情况下非常有用。

© www.soinside.com 2019 - 2024. All rights reserved.