js 抓取网页内容(有没有办法让请求在实际html数据之前等待LinkedIn显示站点数据)

优采云 发布时间: 2022-01-28 01:20

  js 抓取网页内容(有没有办法让请求在实际html数据之前等待LinkedIn显示站点数据)

  我目前正在尝试从 LinkedIn 上的特定页面抓取数据。我有一个可以登录 LinkedIn 的脚本,但是当我尝试访问收录数据的页面时,它遇到了障碍。当我调用 requests.get(data_url) 时,我最终得到了 LinkedIn 加载屏幕的 html,它在 LinkedIn 加载实际页面内容之前显示。有没有办法让请求在实际抓取 html 数据之前等待 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,beautifulsoup可能无法使用。

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

  关于 javascript - 在抓取 python 请求之前等待网页完全加载,我们在 Stack Overflow 上发现了一个类似的问题:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线